From cba2ac6ef10304047f7a7941e6c8912573ebc3c6 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 22 Dec 2016 13:06:44 +0100 Subject: 5.5.53-38.5 --- storage/xtradb/include/univ.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'storage') diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i index cc589166f8d..d198fbf021b 100644 --- a/storage/xtradb/include/univ.i +++ b/storage/xtradb/include/univ.i @@ -64,7 +64,7 @@ component, i.e. we show M.N.P as M.N */ (INNODB_VERSION_MAJOR << 8 | INNODB_VERSION_MINOR) #ifndef PERCONA_INNODB_VERSION -#define PERCONA_INNODB_VERSION 38.3 +#define PERCONA_INNODB_VERSION 38.5 #endif #define INNODB_VERSION_STR MYSQL_SERVER_VERSION -- cgit v1.2.1 From 9284e8b2c64aba1ac108512ecc415a2ea563c387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Wed, 12 Jul 2017 19:34:55 +0300 Subject: MDEV-11828: innodb_page_size=64k must reject ROW_FORMAT=REDUNDANT records longer than 16383 bytes In all InnoDB row formats, the pointers or lengths stored in the record header can be at most 14 bits, that is, count up to 16383. In ROW_FORMAT=REDUNDANT, this limits the maximum possible record length to 16383 bytes. In other ROW_FORMAT, it could merely limit the maximum length of variable-length fields. When MySQL 5.7 introduced innodb_page_size=32k and 64k, the maximum record length was limited to 16383 bytes (I hope 16383, not 16384, to be able to distinguish from a record whose length is 0 bytes). This change is present in MariaDB Server 10.2. btr_cur_optimistic_update(): Restrict maximum record size to 16K-1 for REDUNDANT and 64K page size. dict_index_too_big_for_tree(): The maximum allowed record size is half a B-tree page or 16K(-1 for REDUNDANT) for 64K page size. convert_error_code_to_mysql(): Fix error message to print correct limits. my_error_innodb(): Fix error message to print correct limits. page_zip_rec_needs_ext() : record size was already restricted to 16K. Restrict REDUNDANT to 16K-1. rem0rec.h: Introduce REDUNDANT_REC_MAX_DATA_SIZE (16K-1) and COMPRESSED_REC_MAX_DATA_SIZE (16K). --- storage/innobase/btr/btr0cur.cc | 9 +++++++++ storage/innobase/dict/dict0dict.cc | 11 +++++++---- storage/innobase/handler/ha_innodb.cc | 29 ++++++++++++++++++++++------- storage/innobase/handler/handler0alter.cc | 19 +++++++++++++++---- storage/innobase/include/page0zip.ic | 5 +++-- storage/innobase/include/rem0rec.h | 12 +++++++++--- storage/xtradb/btr/btr0cur.cc | 9 +++++++++ storage/xtradb/dict/dict0dict.cc | 11 +++++++---- storage/xtradb/handler/ha_innodb.cc | 27 +++++++++++++++++++++------ storage/xtradb/handler/handler0alter.cc | 19 +++++++++++++++---- storage/xtradb/include/page0zip.ic | 5 +++-- storage/xtradb/include/rem0rec.h | 12 +++++++++--- 12 files changed, 129 insertions(+), 39 deletions(-) (limited to 'storage') diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc index 2b984b24fd1..2ae6da00549 100644 --- a/storage/innobase/btr/btr0cur.cc +++ b/storage/innobase/btr/btr0cur.cc @@ -2316,6 +2316,15 @@ any_extern: rec = page_cur_get_rec(page_cursor); } + /* We limit max record size to 16k for 64k page size. */ + if (!dict_table_is_comp(index->table) + && new_rec_size > REDUNDANT_REC_MAX_DATA_SIZE) { + ut_ad(srv_page_size == UNIV_PAGE_SIZE_MAX); + err = DB_OVERFLOW; + + goto func_exit; + } + if (UNIV_UNLIKELY(new_rec_size >= (page_get_free_space_of_empty(page_is_comp(page)) / 2))) { diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc index e2ee13234ad..3e9dd072391 100644 --- a/storage/innobase/dict/dict0dict.cc +++ b/storage/innobase/dict/dict0dict.cc @@ -2424,9 +2424,13 @@ dict_index_too_big_for_tree( rec_max_size = 2; } else { /* The maximum allowed record size is half a B-tree - page. No additional sparse page directory entry will - be generated for the first few user records. */ - page_rec_max = page_get_free_space_of_empty(comp) / 2; + page(16k for 64k page size). No additional sparse + page directory entry will be generated for the first + few user records. */ + page_rec_max = (comp || UNIV_PAGE_SIZE < UNIV_PAGE_SIZE_MAX) + ? page_get_free_space_of_empty(comp) / 2 + : REDUNDANT_REC_MAX_DATA_SIZE; + page_ptr_max = page_rec_max; /* Each record has a header. */ rec_max_size = comp @@ -2510,7 +2514,6 @@ add_field_size: /* Check the size limit on leaf pages. */ if (UNIV_UNLIKELY(rec_max_size >= page_rec_max)) { - return(TRUE); } diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 1c38af2441f..83c85161d29 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -1969,18 +1969,33 @@ convert_error_code_to_mysql( case DB_TOO_BIG_RECORD: { /* If prefix is true then a 768-byte prefix is stored - locally for BLOB fields. Refer to dict_table_get_format() */ + locally for BLOB fields. Refer to dict_table_get_format(). + Note that in page0zip.ic page_zip_rec_needs_ext() rec_size + is limited to COMPRESSED_REC_MAX_DATA_SIZE (16K) or + REDUNDANT_REC_MAX_DATA_SIZE (16K-1). */ bool prefix = (dict_tf_get_format(flags) == UNIV_FORMAT_A); + bool comp = !!(flags & DICT_TF_COMPACT); + ulint free_space = page_get_free_space_of_empty(comp) / 2; + + if (free_space >= (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE)) { + free_space = (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE) - 1; + } + my_printf_error(ER_TOO_BIG_ROWSIZE, - "Row size too large (> %lu). Changing some columns " + "Row size too large (> " ULINTPF "). Changing some columns " "to TEXT or BLOB %smay help. In current row " "format, BLOB prefix of %d bytes is stored inline.", MYF(0), - page_get_free_space_of_empty(flags & - DICT_TF_COMPACT) / 2, - prefix ? "or using ROW_FORMAT=DYNAMIC " - "or ROW_FORMAT=COMPRESSED ": "", - prefix ? DICT_MAX_FIXED_COL_LEN : 0); + free_space, + prefix + ? "or using ROW_FORMAT=DYNAMIC or" + " ROW_FORMAT=COMPRESSED " + : "", + prefix + ? DICT_MAX_FIXED_COL_LEN + : 0); return(HA_ERR_TO_BIG_ROW); } diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 54f7c1835a8..2a74ac489c9 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -153,11 +153,22 @@ my_error_innodb( case DB_CORRUPTION: my_error(ER_NOT_KEYFILE, MYF(0), table); break; - case DB_TOO_BIG_RECORD: - my_error(ER_TOO_BIG_ROWSIZE, MYF(0), - page_get_free_space_of_empty( - flags & DICT_TF_COMPACT) / 2); + case DB_TOO_BIG_RECORD: { + /* Note that in page0zip.ic page_zip_rec_needs_ext() rec_size + is limited to COMPRESSED_REC_MAX_DATA_SIZE (16K) or + REDUNDANT_REC_MAX_DATA_SIZE (16K-1). */ + bool comp = !!(flags & DICT_TF_COMPACT); + ulint free_space = page_get_free_space_of_empty(comp) / 2; + + if (free_space >= (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE)) { + free_space = (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE) - 1; + } + + my_error(ER_TOO_BIG_ROWSIZE, MYF(0), free_space); break; + } case DB_INVALID_NULL: /* TODO: report the row, as we do for DB_DUPLICATE_KEY */ my_error(ER_INVALID_USE_OF_NULL, MYF(0)); diff --git a/storage/innobase/include/page0zip.ic b/storage/innobase/include/page0zip.ic index 9a583086925..bee35a48cc2 100644 --- a/storage/innobase/include/page0zip.ic +++ b/storage/innobase/include/page0zip.ic @@ -178,8 +178,9 @@ page_zip_rec_needs_ext( ut_ad(ut_is_2pow(zip_size)); ut_ad(comp || !zip_size); -#if UNIV_PAGE_SIZE_MAX > REC_MAX_DATA_SIZE - if (rec_size >= REC_MAX_DATA_SIZE) { +#if UNIV_PAGE_SIZE_MAX > COMPRESSED_REC_MAX_DATA_SIZE + if (comp ? rec_size >= COMPRESSED_REC_MAX_DATA_SIZE : + rec_size >= REDUNDANT_REC_MAX_DATA_SIZE) { return(TRUE); } #endif diff --git a/storage/innobase/include/rem0rec.h b/storage/innobase/include/rem0rec.h index 83286a98f8e..4adfc128d08 100644 --- a/storage/innobase/include/rem0rec.h +++ b/storage/innobase/include/rem0rec.h @@ -980,9 +980,15 @@ are given in one byte (resp. two byte) format. */ #define REC_1BYTE_OFFS_LIMIT 0x7FUL #define REC_2BYTE_OFFS_LIMIT 0x7FFFUL -/* The data size of record must be smaller than this because we reserve -two upmost bits in a two byte offset for special purposes */ -#define REC_MAX_DATA_SIZE (16384) +/* The data size of record must not be larger than this on +REDUNDANT row format because we reserve two upmost bits in a +two byte offset for special purposes */ +#define REDUNDANT_REC_MAX_DATA_SIZE (16383) + +/* The data size of record must be smaller than this on +COMPRESSED row format because we reserve two upmost bits in a +two byte offset for special purposes */ +#define COMPRESSED_REC_MAX_DATA_SIZE (16384) #ifdef WITH_WSREP int wsrep_rec_get_foreign_key( diff --git a/storage/xtradb/btr/btr0cur.cc b/storage/xtradb/btr/btr0cur.cc index a3aec7e8c47..6480b756f4e 100644 --- a/storage/xtradb/btr/btr0cur.cc +++ b/storage/xtradb/btr/btr0cur.cc @@ -2466,6 +2466,15 @@ any_extern: rec = page_cur_get_rec(page_cursor); } + /* We limit max record size to 16k for 64k page size. */ + if (!dict_table_is_comp(index->table) + && new_rec_size > REDUNDANT_REC_MAX_DATA_SIZE) { + ut_ad(srv_page_size == UNIV_PAGE_SIZE_MAX); + err = DB_OVERFLOW; + + goto func_exit; + } + if (UNIV_UNLIKELY(new_rec_size >= (page_get_free_space_of_empty(page_is_comp(page)) / 2))) { diff --git a/storage/xtradb/dict/dict0dict.cc b/storage/xtradb/dict/dict0dict.cc index a1cfeb3860f..f7a2ae423f8 100644 --- a/storage/xtradb/dict/dict0dict.cc +++ b/storage/xtradb/dict/dict0dict.cc @@ -2430,9 +2430,13 @@ dict_index_too_big_for_tree( rec_max_size = 2; } else { /* The maximum allowed record size is half a B-tree - page. No additional sparse page directory entry will - be generated for the first few user records. */ - page_rec_max = page_get_free_space_of_empty(comp) / 2; + page(16k for 64k page size). No additional sparse + page directory entry will be generated for the first + few user records. */ + page_rec_max = (comp || UNIV_PAGE_SIZE < UNIV_PAGE_SIZE_MAX) + ? page_get_free_space_of_empty(comp) / 2 + : REDUNDANT_REC_MAX_DATA_SIZE; + page_ptr_max = page_rec_max; /* Each record has a header. */ rec_max_size = comp @@ -2516,7 +2520,6 @@ add_field_size: /* Check the size limit on leaf pages. */ if (UNIV_UNLIKELY(rec_max_size >= page_rec_max)) { - return(TRUE); } diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index 0dfa2a50654..d4ece1de49e 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -2299,18 +2299,33 @@ convert_error_code_to_mysql( case DB_TOO_BIG_RECORD: { /* If prefix is true then a 768-byte prefix is stored - locally for BLOB fields. Refer to dict_table_get_format() */ + locally for BLOB fields. Refer to dict_table_get_format(). + Note that in page0zip.ic page_zip_rec_needs_ext() rec_size + is limited to COMPRESSED_REC_MAX_DATA_SIZE (16K) or + REDUNDANT_REC_MAX_DATA_SIZE (16K-1). */ bool prefix = (dict_tf_get_format(flags) == UNIV_FORMAT_A); + bool comp = !!(flags & DICT_TF_COMPACT); + ulint free_space = page_get_free_space_of_empty(comp) / 2; + + if (free_space >= (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE)) { + free_space = (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE) - 1; + } + my_printf_error(ER_TOO_BIG_ROWSIZE, "Row size too large (> %lu). Changing some columns " "to TEXT or BLOB %smay help. In current row " "format, BLOB prefix of %d bytes is stored inline.", MYF(0), - page_get_free_space_of_empty(flags & - DICT_TF_COMPACT) / 2, - prefix ? "or using ROW_FORMAT=DYNAMIC " - "or ROW_FORMAT=COMPRESSED ": "", - prefix ? DICT_MAX_FIXED_COL_LEN : 0); + free_space, + prefix + ? "or using ROW_FORMAT=DYNAMIC or" + " ROW_FORMAT=COMPRESSED " + : "", + prefix + ? DICT_MAX_FIXED_COL_LEN + : 0); return(HA_ERR_TO_BIG_ROW); } diff --git a/storage/xtradb/handler/handler0alter.cc b/storage/xtradb/handler/handler0alter.cc index 75d1c772dea..ef2478bd239 100644 --- a/storage/xtradb/handler/handler0alter.cc +++ b/storage/xtradb/handler/handler0alter.cc @@ -157,11 +157,22 @@ my_error_innodb( case DB_CORRUPTION: my_error(ER_NOT_KEYFILE, MYF(0), table); break; - case DB_TOO_BIG_RECORD: - my_error(ER_TOO_BIG_ROWSIZE, MYF(0), - page_get_free_space_of_empty( - flags & DICT_TF_COMPACT) / 2); + case DB_TOO_BIG_RECORD: { + /* Note that in page0zip.ic page_zip_rec_needs_ext() rec_size + is limited to COMPRESSED_REC_MAX_DATA_SIZE (16K) or + REDUNDANT_REC_MAX_DATA_SIZE (16K-1). */ + bool comp = !!(flags & DICT_TF_COMPACT); + ulint free_space = page_get_free_space_of_empty(comp) / 2; + + if (free_space >= (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE)) { + free_space = (comp ? COMPRESSED_REC_MAX_DATA_SIZE : + REDUNDANT_REC_MAX_DATA_SIZE) - 1; + } + + my_error(ER_TOO_BIG_ROWSIZE, MYF(0), free_space); break; + } case DB_INVALID_NULL: /* TODO: report the row, as we do for DB_DUPLICATE_KEY */ my_error(ER_INVALID_USE_OF_NULL, MYF(0)); diff --git a/storage/xtradb/include/page0zip.ic b/storage/xtradb/include/page0zip.ic index 9a583086925..bee35a48cc2 100644 --- a/storage/xtradb/include/page0zip.ic +++ b/storage/xtradb/include/page0zip.ic @@ -178,8 +178,9 @@ page_zip_rec_needs_ext( ut_ad(ut_is_2pow(zip_size)); ut_ad(comp || !zip_size); -#if UNIV_PAGE_SIZE_MAX > REC_MAX_DATA_SIZE - if (rec_size >= REC_MAX_DATA_SIZE) { +#if UNIV_PAGE_SIZE_MAX > COMPRESSED_REC_MAX_DATA_SIZE + if (comp ? rec_size >= COMPRESSED_REC_MAX_DATA_SIZE : + rec_size >= REDUNDANT_REC_MAX_DATA_SIZE) { return(TRUE); } #endif diff --git a/storage/xtradb/include/rem0rec.h b/storage/xtradb/include/rem0rec.h index 9baf0ab380a..afc191e632d 100644 --- a/storage/xtradb/include/rem0rec.h +++ b/storage/xtradb/include/rem0rec.h @@ -976,9 +976,15 @@ are given in one byte (resp. two byte) format. */ #define REC_1BYTE_OFFS_LIMIT 0x7FUL #define REC_2BYTE_OFFS_LIMIT 0x7FFFUL -/* The data size of record must be smaller than this because we reserve -two upmost bits in a two byte offset for special purposes */ -#define REC_MAX_DATA_SIZE (16384) +/* The data size of record must not be larger than this on +REDUNDANT row format because we reserve two upmost bits in a +two byte offset for special purposes */ +#define REDUNDANT_REC_MAX_DATA_SIZE (16383) + +/* The data size of record must be smaller than this on +COMPRESSED row format because we reserve two upmost bits in a +two byte offset for special purposes */ +#define COMPRESSED_REC_MAX_DATA_SIZE (16384) #ifdef WITH_WSREP int wsrep_rec_get_foreign_key( -- cgit v1.2.1 From ec4e39558ee33da4e10fb1afc6702f325e6aec30 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Sun, 2 Jul 2017 17:02:03 +1000 Subject: ma_recovery: unintentional order of operations Coverity report this as: CID 971840 (#1 of 1): Operands don't affect result (CONSTANT_EXPRESSION_RESULT) result_independent_of_operands: 4 | (flags & 1) is always true regardless of the values of its operands. This occurs as the logical first operand of "?:". The C order of precidence has | of higher precidence than ?:. The intenting implies an | of the 3 terms. Adjust to intented meaning. --- storage/maria/ma_recovery.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'storage') diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 5e42ebc8d5d..618e6381f27 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -888,7 +888,7 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE) goto end; fn_format(filename, name, "", MARIA_NAME_IEXT, (MY_UNPACK_FILENAME | - (flags & HA_DONT_TOUCH_DATA) ? MY_RETURN_REAL_PATH : 0) | + ((flags & HA_DONT_TOUCH_DATA) ? MY_RETURN_REAL_PATH : 0)) | MY_APPEND_EXT); linkname_ptr= NULL; create_flag= MY_DELETE_OLD; -- cgit v1.2.1 From 6efee2254110206a037bb726de00a4e734ae8453 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Fri, 14 Jul 2017 19:08:59 +0200 Subject: change flags as it was done in MyISAM in ab785bfe5b50 --- storage/maria/ma_recovery.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'storage') diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 618e6381f27..b2e8705b15e 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -887,9 +887,7 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE) if (create_database_if_not_exists(name)) goto end; fn_format(filename, name, "", MARIA_NAME_IEXT, - (MY_UNPACK_FILENAME | - ((flags & HA_DONT_TOUCH_DATA) ? MY_RETURN_REAL_PATH : 0)) | - MY_APPEND_EXT); + MY_UNPACK_FILENAME | MY_RETURN_REAL_PATH | MY_APPEND_EXT); linkname_ptr= NULL; create_flag= MY_DELETE_OLD; tprint(tracef, "Table '%s' creating as '%s'\n", name, filename); -- cgit v1.2.1 From 7d309b5f74982861efdfd069fd0e46c18d0cb7fe Mon Sep 17 00:00:00 2001 From: Elena Stepanova Date: Tue, 18 Jul 2017 01:38:13 +0300 Subject: Add storage_engine/parts overlay for MyISAM --- storage/myisam/mysql-test/storage_engine/parts/disabled.def | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 storage/myisam/mysql-test/storage_engine/parts/disabled.def (limited to 'storage') diff --git a/storage/myisam/mysql-test/storage_engine/parts/disabled.def b/storage/myisam/mysql-test/storage_engine/parts/disabled.def new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.1 From c9883b75914d0ba4975aae0fbf8164f026e88559 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Sun, 2 Jul 2017 14:53:23 +1000 Subject: ma_check/mi_check: maria_repair_parallel initialization for !quick end_io_call uses uninitialized values from the new_data_cache As such we the buffer 0 and check this before calling end_io_cache on it. Thanks Sergey Vojtovich for the review and for this solution. Found by Coverity (ref 972481). --- storage/maria/ma_check.c | 4 +++- storage/myisam/mi_check.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'storage') diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index fb35edc3be3..198df72a1d6 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -4250,6 +4250,8 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info, } */ DBUG_PRINT("info", ("is quick repair: %d", (int) rep_quick)); + if (!rep_quick) + my_b_clear(&new_data_cache); /* Initialize pthread structures before goto err. */ mysql_mutex_init(key_SORT_INFO_mutex, &sort_info.mutex, MY_MUTEX_INIT_FAST); @@ -4608,7 +4610,7 @@ err: already or they were not yet started (if the error happend before creating the threads). */ - if (!rep_quick) + if (!rep_quick && my_b_inited(&new_data_cache)) end_io_cache(&new_data_cache); if (!got_error) { diff --git a/storage/myisam/mi_check.c b/storage/myisam/mi_check.c index df97d6035d8..23e54966e2d 100644 --- a/storage/myisam/mi_check.c +++ b/storage/myisam/mi_check.c @@ -2676,6 +2676,8 @@ int mi_repair_parallel(HA_CHECK *param, register MI_INFO *info, */ DBUG_PRINT("info", ("is quick repair: %d", rep_quick)); bzero((char*)&sort_info,sizeof(sort_info)); + if (!rep_quick) + my_b_clear(&new_data_cache); /* Initialize pthread structures before goto err. */ mysql_mutex_init(mi_key_mutex_MI_SORT_INFO_mutex, &sort_info.mutex, MY_MUTEX_INIT_FAST); @@ -3050,7 +3052,7 @@ err: already or they were not yet started (if the error happend before creating the threads). */ - if (!rep_quick) + if (!rep_quick && my_b_inited(&new_data_cache)) (void) end_io_cache(&new_data_cache); if (!got_error) { -- cgit v1.2.1 From 46977e0a01ae2118df08c3cccaf2f0eaaabd2715 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 18 Jul 2017 19:47:01 +0200 Subject: 5.5.55-38.8 --- storage/xtradb/btr/btr0btr.c | 2 +- storage/xtradb/dict/dict0crea.c | 10 +-- storage/xtradb/dict/dict0load.c | 10 +-- storage/xtradb/dict/dict0mem.c | 2 +- storage/xtradb/fil/fil0fil.c | 2 +- storage/xtradb/fsp/fsp0fsp.c | 7 +- storage/xtradb/handler/i_s.cc | 24 +----- storage/xtradb/include/btr0cur.h | 13 ++-- storage/xtradb/include/btr0sea.h | 7 +- storage/xtradb/include/buf0buddy.ic | 2 +- storage/xtradb/include/buf0buf.h | 3 +- storage/xtradb/include/dict0dict.h | 16 ++-- storage/xtradb/include/dict0mem.h | 2 +- storage/xtradb/include/dyn0dyn.h | 18 ++--- storage/xtradb/include/dyn0dyn.ic | 2 +- storage/xtradb/include/fsp0fsp.h | 2 +- storage/xtradb/include/log0online.h | 20 +++-- storage/xtradb/include/mach0data.h | 16 ++-- storage/xtradb/include/mtr0mtr.h | 5 +- storage/xtradb/include/os0file.h | 5 +- storage/xtradb/include/page0page.h | 18 ++--- storage/xtradb/include/page0zip.h | 5 +- storage/xtradb/include/rem0rec.h | 3 +- storage/xtradb/include/row0upd.h | 5 +- storage/xtradb/include/trx0trx.h | 4 +- storage/xtradb/include/univ.i | 2 +- storage/xtradb/log/log0online.c | 148 ++++++++++++++++++++++++++---------- storage/xtradb/mach/mach0data.c | 44 ++++++++--- storage/xtradb/os/os0file.c | 49 +++--------- storage/xtradb/rem/rem0rec.c | 2 +- storage/xtradb/row/row0merge.c | 4 +- storage/xtradb/row/row0purge.c | 2 +- storage/xtradb/srv/srv0srv.c | 9 ++- storage/xtradb/srv/srv0start.c | 2 + storage/xtradb/trx/trx0roll.c | 4 + 35 files changed, 255 insertions(+), 214 deletions(-) (limited to 'storage') diff --git a/storage/xtradb/btr/btr0btr.c b/storage/xtradb/btr/btr0btr.c index 0c429363789..da848b1b4f8 100644 --- a/storage/xtradb/btr/btr0btr.c +++ b/storage/xtradb/btr/btr0btr.c @@ -2958,7 +2958,7 @@ Removes a page from the level list of pages. /*************************************************************//** Removes a page from the level list of pages. */ -static __attribute__((nonnull)) +static void btr_level_list_remove_func( /*=======================*/ diff --git a/storage/xtradb/dict/dict0crea.c b/storage/xtradb/dict/dict0crea.c index b950c2d9b3f..673bafacf31 100644 --- a/storage/xtradb/dict/dict0crea.c +++ b/storage/xtradb/dict/dict0crea.c @@ -112,13 +112,13 @@ dict_create_sys_tables_tuple( dfield = dtuple_get_nth_field(entry, 3/*TYPE*/); ptr = mem_heap_alloc(heap, 4); - if (table->flags & (~DICT_TF_COMPACT & ~(~0 << DICT_TF_BITS))) { + if (table->flags & (~DICT_TF_COMPACT & ~(~0U << DICT_TF_BITS))) { ut_a(table->flags & DICT_TF_COMPACT); ut_a(dict_table_get_format(table) >= DICT_TF_FORMAT_ZIP); ut_a((table->flags & DICT_TF_ZSSIZE_MASK) <= (DICT_TF_ZSSIZE_MAX << DICT_TF_ZSSIZE_SHIFT)); - ut_a(!(table->flags & (~0 << DICT_TF2_BITS))); - mach_write_to_4(ptr, table->flags & ~(~0 << DICT_TF_BITS)); + ut_a(!(table->flags & (~0U << DICT_TF2_BITS))); + mach_write_to_4(ptr, table->flags & ~(~0U << DICT_TF_BITS)); } else { mach_write_to_4(ptr, DICT_TABLE_ORDINARY); } @@ -306,7 +306,7 @@ dict_build_table_def_step( ut_ad(!dict_table_zip_size(table) || dict_table_get_format(table) >= DICT_TF_FORMAT_ZIP); - flags = table->flags & ~(~0 << DICT_TF_BITS); + flags = table->flags & ~(~0U << DICT_TF_BITS); error = fil_create_new_single_table_tablespace( space, path_or_name, is_path, flags == DICT_TF_COMPACT ? 0 : flags, @@ -325,7 +325,7 @@ dict_build_table_def_step( mtr_commit(&mtr); } else { /* Create in the system tablespace: disallow new features */ - table->flags &= (~0 << DICT_TF_BITS) | DICT_TF_COMPACT; + table->flags &= (~0U << DICT_TF_BITS) | DICT_TF_COMPACT; } row = dict_create_sys_tables_tuple(table, node->heap); diff --git a/storage/xtradb/dict/dict0load.c b/storage/xtradb/dict/dict0load.c index 067c9d2b8f9..1d11868ef73 100644 --- a/storage/xtradb/dict/dict0load.c +++ b/storage/xtradb/dict/dict0load.c @@ -717,7 +717,7 @@ dict_sys_tables_get_flags( return(ULINT_UNDEFINED); } - if (UNIV_UNLIKELY(flags & (~0 << DICT_TF_BITS))) { + if (UNIV_UNLIKELY(flags & (~0U << DICT_TF_BITS))) { /* Some unused bits are set. */ return(ULINT_UNDEFINED); } @@ -1406,7 +1406,7 @@ err_len: goto err_len; } type = mach_read_from_4(field); - if (UNIV_UNLIKELY(type & (~0 << DICT_IT_BITS))) { + if (UNIV_UNLIKELY(type & (~0U << DICT_IT_BITS))) { return("unknown SYS_INDEXES.TYPE bits"); } @@ -1771,7 +1771,7 @@ err_len: flags2 = mach_read_from_4(field); - if (flags2 & (~0 << (DICT_TF2_BITS - DICT_TF2_SHIFT))) { + if (flags2 & (~0U << (DICT_TF2_BITS - DICT_TF2_SHIFT))) { ut_print_timestamp(stderr); fputs(" InnoDB: Warning: table ", stderr); ut_print_filename(stderr, name); @@ -1780,7 +1780,7 @@ err_len: " has unknown flags %lx.\n", (ulong) flags2); - flags2 &= ~(~0 << (DICT_TF2_BITS - DICT_TF2_SHIFT)); + flags2 &= ~(~0U << (DICT_TF2_BITS - DICT_TF2_SHIFT)); } flags |= flags2 << DICT_TF2_SHIFT; @@ -1913,7 +1913,7 @@ err_exit: if (!fil_open_single_table_tablespace( TRUE, table->space, table->flags == DICT_TF_COMPACT ? 0 : - table->flags & ~(~0 << DICT_TF_BITS), name, NULL)) { + table->flags & ~(~0U << DICT_TF_BITS), name, NULL)) { /* We failed to find a sensible tablespace file */ diff --git a/storage/xtradb/dict/dict0mem.c b/storage/xtradb/dict/dict0mem.c index 40099c06823..18917a30ff6 100644 --- a/storage/xtradb/dict/dict0mem.c +++ b/storage/xtradb/dict/dict0mem.c @@ -69,7 +69,7 @@ dict_mem_table_create( DBUG_ENTER("dict_mem_table_create"); ut_ad(name); - ut_a(!(flags & (~0 << DICT_TF2_BITS))); + ut_a(!(flags & (~0U << DICT_TF2_BITS))); heap = mem_heap_create(DICT_HEAP_SIZE); diff --git a/storage/xtradb/fil/fil0fil.c b/storage/xtradb/fil/fil0fil.c index 67ad5ef7855..e824526e097 100644 --- a/storage/xtradb/fil/fil0fil.c +++ b/storage/xtradb/fil/fil0fil.c @@ -3868,7 +3868,7 @@ skip_write: } if (space_id != id - || space_flags != (flags & ~(~0 << DICT_TF_BITS))) { + || space_flags != (flags & ~(~0U << DICT_TF_BITS))) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: tablespace id and flags in file ", diff --git a/storage/xtradb/fsp/fsp0fsp.c b/storage/xtradb/fsp/fsp0fsp.c index 2d145f44bab..8927e7c5841 100644 --- a/storage/xtradb/fsp/fsp0fsp.c +++ b/storage/xtradb/fsp/fsp0fsp.c @@ -249,8 +249,7 @@ fsp_fill_free_list( then we do not allocate more extents */ ulint space, /*!< in: space */ fsp_header_t* header, /*!< in/out: space header */ - mtr_t* mtr) /*!< in/out: mini-transaction */ - __attribute__((nonnull)); + mtr_t* mtr); /*!< in/out: mini-transaction */ /**********************************************************************//** Allocates a single free page from a segment. This function implements the intelligent allocation strategy which tries to minimize file space @@ -279,7 +278,7 @@ fseg_alloc_free_page_low( in which the page should be initialized. If init_mtr!=mtr, but the page is already latched in mtr, do not initialize the page. */ - __attribute__((warn_unused_result, nonnull)); + __attribute__((warn_unused_result)); #endif /* !UNIV_HOTBACKUP */ /**********************************************************************//** @@ -1572,7 +1571,7 @@ Allocates a single free page from a space. The page is marked as used. @retval block, rw_lock_x_lock_count(&block->lock) == 1 if allocation succeeded (init_mtr == mtr, or the page was not previously freed in mtr) @retval block (not allocated or initialized) otherwise */ -static __attribute__((nonnull, warn_unused_result)) +static __attribute__((warn_unused_result)) buf_block_t* fsp_alloc_free_page( /*================*/ diff --git a/storage/xtradb/handler/i_s.cc b/storage/xtradb/handler/i_s.cc index cb4a8f2357a..0c6449ef183 100644 --- a/storage/xtradb/handler/i_s.cc +++ b/storage/xtradb/handler/i_s.cc @@ -7544,29 +7544,7 @@ i_s_innodb_changed_pages_fill( while(log_online_bitmap_iterator_next(&i) && (!srv_max_changed_pages || - output_rows_num < srv_max_changed_pages) && - /* - There is no need to compare both start LSN and end LSN fields - with maximum value. It's enough to compare only start LSN. - Example: - - max_lsn = 100 - \\\\\\\\\\\\\\\\\\\\\\\\\|\\\\\\\\ - Query 1 - I------I I-------I I-------------I I----I - ////////////////// | - Query 2 - 1 2 3 4 - - Query 1: - SELECT * FROM INNODB_CHANGED_PAGES WHERE start_lsn < 100 - will select 1,2,3 bitmaps - Query 2: - SELECT * FROM INNODB_CHANGED_PAGES WHERE end_lsn < 100 - will select 1,2 bitmaps - - The condition start_lsn <= 100 will be false after reading - 1,2,3 bitmaps which suits for both cases. - */ - LOG_BITMAP_ITERATOR_START_LSN(i) <= max_lsn) + output_rows_num < srv_max_changed_pages)) { if (!LOG_BITMAP_ITERATOR_PAGE_CHANGED(i)) continue; diff --git a/storage/xtradb/include/btr0cur.h b/storage/xtradb/include/btr0cur.h index 7b56c1bbb6e..7f6fd34635f 100644 --- a/storage/xtradb/include/btr0cur.h +++ b/storage/xtradb/include/btr0cur.h @@ -261,7 +261,7 @@ btr_cur_update_alloc_zip( FALSE=update-in-place */ mtr_t* mtr, /*!< in: mini-transaction */ trx_t* trx) /*!< in: NULL or transaction */ - __attribute__((nonnull (1, 2, 3, 6), warn_unused_result)); + __attribute__((warn_unused_result)); /*************************************************************//** Updates a record when the update causes no size changes in its fields. @return DB_SUCCESS or error number */ @@ -345,8 +345,7 @@ btr_cur_del_mark_set_clust_rec( const ulint* offsets,/*!< in: rec_get_offsets(rec) */ ibool val, /*!< in: value to set */ que_thr_t* thr, /*!< in: query thread */ - mtr_t* mtr) /*!< in: mtr */ - __attribute__((nonnull)); + mtr_t* mtr); /*!< in: mtr */ /***********************************************************//** Sets a secondary index record delete mark to TRUE or FALSE. @return DB_SUCCESS, DB_LOCK_WAIT, or error number */ @@ -499,8 +498,7 @@ btr_cur_disown_inherited_fields( dict_index_t* index, /*!< in: index of the page */ const ulint* offsets,/*!< in: array returned by rec_get_offsets() */ const upd_t* update, /*!< in: update vector */ - mtr_t* mtr) /*!< in/out: mini-transaction */ - __attribute__((nonnull(2,3,4,5,6))); + mtr_t* mtr); /*!< in/out: mini-transaction */ /** Operation code for btr_store_big_rec_extern_fields(). */ enum blob_op { @@ -545,7 +543,7 @@ btr_store_big_rec_extern_fields( mtr_t* btr_mtr, /*!< in: mtr containing the latches to the clustered index */ enum blob_op op) /*! in: operation code */ - __attribute__((nonnull, warn_unused_result)); + __attribute__((warn_unused_result)); /*******************************************************************//** Frees the space in an externally stored field to the file space @@ -621,8 +619,7 @@ btr_push_update_extern_fields( /*==========================*/ dtuple_t* tuple, /*!< in/out: data tuple */ const upd_t* update, /*!< in: update vector */ - mem_heap_t* heap) /*!< in: memory heap */ - __attribute__((nonnull)); + mem_heap_t* heap); /*!< in: memory heap */ /***********************************************************//** Sets a secondary index record's delete mark to the given value. This function is only used by the insert buffer merge mechanism. */ diff --git a/storage/xtradb/include/btr0sea.h b/storage/xtradb/include/btr0sea.h index 39c0a66fb9a..bdffe402277 100644 --- a/storage/xtradb/include/btr0sea.h +++ b/storage/xtradb/include/btr0sea.h @@ -205,14 +205,14 @@ hash_table_t* btr_search_get_hash_table( /*======================*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull,pure,warn_unused_result)); + __attribute__((warn_unused_result)); UNIV_INLINE rw_lock_t* btr_search_get_latch( /*=================*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull,pure,warn_unused_result)); + __attribute__((warn_unused_result)); /*********************************************************************//** Returns the AHI partition number corresponding to a given index ID. */ @@ -229,8 +229,7 @@ UNIV_INLINE void btr_search_index_init( /*===============*/ - dict_index_t* index) /*!< in: index */ - __attribute__((nonnull)); + dict_index_t* index); /*!< in: index */ UNIV_INLINE void diff --git a/storage/xtradb/include/buf0buddy.ic b/storage/xtradb/include/buf0buddy.ic index d7053881caa..2b5e62e97b2 100644 --- a/storage/xtradb/include/buf0buddy.ic +++ b/storage/xtradb/include/buf0buddy.ic @@ -51,7 +51,7 @@ buf_buddy_alloc_low( buf_pool->mutex was temporarily released */ ibool have_page_hash_mutex) - __attribute__((malloc, nonnull)); + __attribute__((malloc)); /**********************************************************************//** Deallocate a block. */ diff --git a/storage/xtradb/include/buf0buf.h b/storage/xtradb/include/buf0buf.h index 23692c92c09..d584062a81f 100644 --- a/storage/xtradb/include/buf0buf.h +++ b/storage/xtradb/include/buf0buf.h @@ -274,8 +274,7 @@ buf_relocate( buf_page_t* bpage, /*!< in/out: control block being relocated; buf_page_get_state(bpage) must be BUF_BLOCK_ZIP_DIRTY or BUF_BLOCK_ZIP_PAGE */ - buf_page_t* dpage) /*!< in/out: destination control block */ - __attribute__((nonnull)); + buf_page_t* dpage); /*!< in/out: destination control block */ /*********************************************************************//** Gets the current size of buffer buf_pool in bytes. @return size in bytes */ diff --git a/storage/xtradb/include/dict0dict.h b/storage/xtradb/include/dict0dict.h index 121f9241cbc..5a3465fd9c5 100644 --- a/storage/xtradb/include/dict0dict.h +++ b/storage/xtradb/include/dict0dict.h @@ -605,7 +605,7 @@ ulint dict_index_is_clust( /*================*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); /********************************************************************//** Check whether the index is unique. @return nonzero for unique index, zero for other indexes */ @@ -614,7 +614,7 @@ ulint dict_index_is_unique( /*=================*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); /********************************************************************//** Check whether the index is the insert buffer tree. @return nonzero for insert buffer, zero for other indexes */ @@ -623,7 +623,7 @@ ulint dict_index_is_ibuf( /*===============*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); /********************************************************************//** Check whether the index is a secondary index or the insert buffer tree. @return nonzero for insert buffer, zero for other indexes */ @@ -632,7 +632,7 @@ ulint dict_index_is_sec_or_ibuf( /*======================*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); /********************************************************************//** Gets the number of user-defined columns in a table in the dictionary @@ -643,7 +643,7 @@ ulint dict_table_get_n_user_cols( /*=======================*/ const dict_table_t* table) /*!< in: table */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); /********************************************************************//** Gets the number of system columns in a table in the dictionary cache. @return number of system (e.g., ROW_ID) columns of a table */ @@ -662,7 +662,7 @@ ulint dict_table_get_n_cols( /*==================*/ const dict_table_t* table) /*!< in: table */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); #ifdef UNIV_DEBUG /********************************************************************//** Gets the nth column of a table. @@ -1313,7 +1313,7 @@ ulint dict_index_is_corrupted( /*====================*/ const dict_index_t* index) /*!< in: index */ - __attribute__((nonnull, pure, warn_unused_result)); + __attribute__((warn_unused_result)); #endif /* !UNIV_HOTBACKUP */ /**********************************************************************//** @@ -1324,7 +1324,7 @@ void dict_set_corrupted( /*===============*/ dict_index_t* index) /*!< in/out: index */ - UNIV_COLD __attribute__((nonnull)); + UNIV_COLD; /**********************************************************************//** Flags an index corrupted in the data dictionary cache only. This diff --git a/storage/xtradb/include/dict0mem.h b/storage/xtradb/include/dict0mem.h index ba98eed7701..2bdad46ae08 100644 --- a/storage/xtradb/include/dict0mem.h +++ b/storage/xtradb/include/dict0mem.h @@ -87,7 +87,7 @@ combination of types */ /* @{ */ #define DICT_TF_FORMAT_SHIFT 5 /* file format */ #define DICT_TF_FORMAT_MASK \ -((~(~0 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT))) << DICT_TF_FORMAT_SHIFT) +((~(~0U << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT))) << DICT_TF_FORMAT_SHIFT) #define DICT_TF_FORMAT_51 0 /*!< InnoDB/MySQL up to 5.1 */ #define DICT_TF_FORMAT_ZIP 1 /*!< InnoDB plugin for 5.1: compressed tables, diff --git a/storage/xtradb/include/dyn0dyn.h b/storage/xtradb/include/dyn0dyn.h index 62ed862e82c..e3517108a29 100644 --- a/storage/xtradb/include/dyn0dyn.h +++ b/storage/xtradb/include/dyn0dyn.h @@ -47,9 +47,8 @@ UNIV_INLINE dyn_array_t* dyn_array_create( /*=============*/ - dyn_array_t* arr) /*!< in/out memory buffer of + dyn_array_t* arr); /*!< in/out memory buffer of size sizeof(dyn_array_t) */ - __attribute__((nonnull)); /************************************************************//** Frees a dynamic array. */ UNIV_INLINE @@ -70,7 +69,7 @@ dyn_array_open( dyn_array_t* arr, /*!< in: dynamic array */ ulint size) /*!< in: size in bytes of the buffer; MUST be smaller than DYN_ARRAY_DATA_SIZE! */ - __attribute__((nonnull, warn_unused_result)); + __attribute__((warn_unused_result)); /*********************************************************************//** Closes the buffer returned by dyn_array_open. */ UNIV_INLINE @@ -78,8 +77,7 @@ void dyn_array_close( /*============*/ dyn_array_t* arr, /*!< in: dynamic array */ - const byte* ptr) /*!< in: end of used space */ - __attribute__((nonnull)); + const byte* ptr); /*!< in: end of used space */ /*********************************************************************//** Makes room on top of a dyn array and returns a pointer to the added element. The caller must copy the element to @@ -91,7 +89,7 @@ dyn_array_push( /*===========*/ dyn_array_t* arr, /*!< in/out: dynamic array */ ulint size) /*!< in: size in bytes of the element */ - __attribute__((nonnull, warn_unused_result)); + __attribute__((warn_unused_result)); /************************************************************//** Returns pointer to an element in dyn array. @return pointer to element */ @@ -102,7 +100,7 @@ dyn_array_get_element( const dyn_array_t* arr, /*!< in: dyn array */ ulint pos) /*!< in: position of element in bytes from array start */ - __attribute__((nonnull, warn_unused_result)); + __attribute__((warn_unused_result)); /************************************************************//** Returns the size of stored data in a dyn array. @return data size in bytes */ @@ -111,7 +109,7 @@ ulint dyn_array_get_data_size( /*====================*/ const dyn_array_t* arr) /*!< in: dyn array */ - __attribute__((nonnull, warn_unused_result, pure)); + __attribute__((warn_unused_result)); /************************************************************//** Gets the first block in a dyn array. @param arr dyn array @@ -145,7 +143,7 @@ ulint dyn_block_get_used( /*===============*/ const dyn_block_t* block) /*!< in: dyn array block */ - __attribute__((nonnull, warn_unused_result, pure)); + __attribute__((warn_unused_result)); /********************************************************************//** Gets pointer to the start of data in a dyn array block. @return pointer to data */ @@ -154,7 +152,7 @@ byte* dyn_block_get_data( /*===============*/ const dyn_block_t* block) /*!< in: dyn array block */ - __attribute__((nonnull, warn_unused_result, pure)); + __attribute__((warn_unused_result)); /********************************************************//** Pushes n bytes to a dyn array. */ UNIV_INLINE diff --git a/storage/xtradb/include/dyn0dyn.ic b/storage/xtradb/include/dyn0dyn.ic index 177877ed1fd..239d0547c6c 100644 --- a/storage/xtradb/include/dyn0dyn.ic +++ b/storage/xtradb/include/dyn0dyn.ic @@ -36,7 +36,7 @@ dyn_block_t* dyn_array_add_block( /*================*/ dyn_array_t* arr) /*!< in/out: dyn array */ - __attribute__((nonnull, warn_unused_result)); + __attribute__((warn_unused_result)); /********************************************************************//** Gets the number of used bytes in a dyn array block. diff --git a/storage/xtradb/include/fsp0fsp.h b/storage/xtradb/include/fsp0fsp.h index f07e3decc66..0b813182947 100644 --- a/storage/xtradb/include/fsp0fsp.h +++ b/storage/xtradb/include/fsp0fsp.h @@ -42,7 +42,7 @@ Created 12/18/1995 Heikki Tuuri #define FSP_FLAGS_POS_PAGE_SSIZE 6 /** Bit mask of the PAGE_SSIZE field */ #define FSP_FLAGS_MASK_PAGE_SSIZE \ - ((~(~0 << FSP_FLAGS_WIDTH_PAGE_SSIZE)) \ + ((~(~0U << FSP_FLAGS_WIDTH_PAGE_SSIZE)) \ << FSP_FLAGS_POS_PAGE_SSIZE) /** Return the value of the PAGE_SSIZE field */ #define FSP_FLAGS_GET_PAGE_SSIZE(flags) \ diff --git a/storage/xtradb/include/log0online.h b/storage/xtradb/include/log0online.h index 02d75001505..2462263dec2 100644 --- a/storage/xtradb/include/log0online.h +++ b/storage/xtradb/include/log0online.h @@ -37,19 +37,25 @@ log_online_bitmap_file_range_t; /** An iterator over changed page info */ typedef struct log_bitmap_iterator_struct log_bitmap_iterator_t; -/*********************************************************************//** -Initializes the online log following subsytem. */ +/** Initialize the constant part of the log tracking subsystem */ +UNIV_INTERN +void +log_online_init(void); + +/** Initialize the dynamic part of the log tracking subsystem */ UNIV_INTERN void log_online_read_init(void); -/*=======================*/ -/*********************************************************************//** -Shuts down the online log following subsystem. */ +/** Shut down the dynamic part of the log tracking subsystem */ UNIV_INTERN void log_online_read_shutdown(void); -/*===========================*/ + +/** Shut down the constant part of the log tracking subsystem */ +UNIV_INTERN +void +log_online_shutdown(void); /*********************************************************************//** Reads and parses the redo log up to last checkpoint LSN to build the changed @@ -159,6 +165,8 @@ struct log_online_bitmap_file_range_struct { /** Struct for an iterator through all bits of changed pages bitmap blocks */ struct log_bitmap_iterator_struct { + ib_uint64_t max_lsn; /*!< End LSN of the + range */ ibool failed; /*!< Has the iteration stopped prematurely */ log_online_bitmap_file_range_t in_files; /*!< The bitmap files diff --git a/storage/xtradb/include/mach0data.h b/storage/xtradb/include/mach0data.h index 81c0866f367..d9a4a9170c7 100644 --- a/storage/xtradb/include/mach0data.h +++ b/storage/xtradb/include/mach0data.h @@ -51,7 +51,7 @@ ulint mach_read_from_1( /*=============*/ const byte* b) /*!< in: pointer to byte */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*******************************************************//** The following function is used to store data in two consecutive bytes. We store the most significant byte to the lower address. */ @@ -112,7 +112,7 @@ ulint mach_read_from_3( /*=============*/ const byte* b) /*!< in: pointer to 3 bytes */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*******************************************************//** The following function is used to store data in four consecutive bytes. We store the most significant byte to the lowest address. */ @@ -131,7 +131,7 @@ ulint mach_read_from_4( /*=============*/ const byte* b) /*!< in: pointer to four bytes */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*********************************************************//** Writes a ulint in a compressed form (1..5 bytes). @return stored size in bytes */ @@ -158,7 +158,7 @@ ulint mach_read_compressed( /*=================*/ const byte* b) /*!< in: pointer to memory from where to read */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*******************************************************//** The following function is used to store data in 6 consecutive bytes. We store the most significant byte to the lowest address. */ @@ -177,7 +177,7 @@ ib_uint64_t mach_read_from_6( /*=============*/ const byte* b) /*!< in: pointer to 6 bytes */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*******************************************************//** The following function is used to store data in 7 consecutive bytes. We store the most significant byte to the lowest address. */ @@ -196,7 +196,7 @@ ib_uint64_t mach_read_from_7( /*=============*/ const byte* b) /*!< in: pointer to 7 bytes */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*******************************************************//** The following function is used to store data in 8 consecutive bytes. We store the most significant byte to the lowest address. */ @@ -241,7 +241,7 @@ ib_uint64_t mach_ull_read_compressed( /*=====================*/ const byte* b) /*!< in: pointer to memory from where to read */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*********************************************************//** Writes a 64-bit integer in a compressed form (1..11 bytes). @return size in bytes */ @@ -268,7 +268,7 @@ ib_uint64_t mach_ull_read_much_compressed( /*==========================*/ const byte* b) /*!< in: pointer to memory from where to read */ - __attribute__((nonnull, pure)); + __attribute__((warn_unused_result)); /*********************************************************//** Reads a ulint in a compressed form if the log record fully contains it. @return pointer to end of the stored field, NULL if not complete */ diff --git a/storage/xtradb/include/mtr0mtr.h b/storage/xtradb/include/mtr0mtr.h index 031fccd300c..bb60ffbd9bb 100644 --- a/storage/xtradb/include/mtr0mtr.h +++ b/storage/xtradb/include/mtr0mtr.h @@ -205,8 +205,7 @@ UNIV_INTERN void mtr_commit( /*=======*/ - mtr_t* mtr) /*!< in/out: mini-transaction */ - __attribute__((nonnull)); + mtr_t* mtr); /*!< in/out: mini-transaction */ /**********************************************************//** Sets and returns a savepoint in mtr. @return savepoint */ @@ -311,7 +310,7 @@ mtr_memo_contains( mtr_t* mtr, /*!< in: mtr */ const void* object, /*!< in: object to search */ ulint type) /*!< in: type of object */ - __attribute__((warn_unused_result, nonnull)); + __attribute__((warn_unused_result)); /**********************************************************//** Checks if memo contains the given page. diff --git a/storage/xtradb/include/os0file.h b/storage/xtradb/include/os0file.h index 71da5ea6125..618d6f540ae 100644 --- a/storage/xtradb/include/os0file.h +++ b/storage/xtradb/include/os0file.h @@ -515,9 +515,10 @@ os_file_create_simple_no_error_handling_func( it would be enabled otherwise). */ ibool* success);/*!< out: TRUE if succeed, FALSE if error */ /****************************************************************//** -Tries to disable OS caching on an opened file descriptor. */ +Tries to disable OS caching on an opened file descriptor. +@return TRUE if operation is success and FALSE otherwise */ UNIV_INTERN -void +ibool os_file_set_nocache( /*================*/ int fd, /*!< in: file descriptor to alter */ diff --git a/storage/xtradb/include/page0page.h b/storage/xtradb/include/page0page.h index b4755dce61d..6c8281b40cb 100644 --- a/storage/xtradb/include/page0page.h +++ b/storage/xtradb/include/page0page.h @@ -231,8 +231,7 @@ ulint page_header_get_offs( /*=================*/ const page_t* page, /*!< in: page */ - ulint field) /*!< in: PAGE_FREE, ... */ - __attribute__((nonnull, pure)); + ulint field); /*!< in: PAGE_FREE, ... */ /*************************************************************//** Returns the pointer stored in the given header field, or NULL. */ @@ -792,8 +791,7 @@ page_copy_rec_list_end( buf_block_t* block, /*!< in: index page containing rec */ rec_t* rec, /*!< in: record on page */ dict_index_t* index, /*!< in: record descriptor */ - mtr_t* mtr) /*!< in: mtr */ - __attribute__((nonnull)); + mtr_t* mtr); /*!< in: mtr */ /*************************************************************//** Copies records from page to new_page, up to the given record, NOT including that record. Infimum and supremum records are not copied. @@ -808,8 +806,7 @@ page_copy_rec_list_start( buf_block_t* block, /*!< in: index page containing rec */ rec_t* rec, /*!< in: record on page */ dict_index_t* index, /*!< in: record descriptor */ - mtr_t* mtr) /*!< in: mtr */ - __attribute__((nonnull)); + mtr_t* mtr); /*!< in: mtr */ /*************************************************************//** Deletes records from a page from a given record onward, including that record. The infimum and supremum records are not deleted. */ @@ -852,8 +849,7 @@ page_move_rec_list_end( buf_block_t* block, /*!< in: index page from where to move */ rec_t* split_rec, /*!< in: first record to move */ dict_index_t* index, /*!< in: record descriptor */ - mtr_t* mtr) /*!< in: mtr */ - __attribute__((nonnull(1, 2, 4, 5))); + mtr_t* mtr); /*!< in: mtr */ /*************************************************************//** Moves record list start to another page. Moved records do not include split_rec. @@ -877,8 +873,7 @@ page_dir_split_slot( page_t* page, /*!< in: index page */ page_zip_des_t* page_zip,/*!< in/out: compressed page whose uncompressed part will be written, or NULL */ - ulint slot_no)/*!< in: the directory slot */ - __attribute__((nonnull(1))); + ulint slot_no);/*!< in: the directory slot */ /*************************************************************//** Tries to balance the given directory slot with too few records with the upper neighbor, so that there are at least the minimum number @@ -890,8 +885,7 @@ page_dir_balance_slot( /*==================*/ page_t* page, /*!< in/out: index page */ page_zip_des_t* page_zip,/*!< in/out: compressed page, or NULL */ - ulint slot_no)/*!< in: the directory slot */ - __attribute__((nonnull(1))); + ulint slot_no);/*!< in: the directory slot */ /**********************************************************//** Parses a log record of a record list end or start deletion. @return end of log record or NULL */ diff --git a/storage/xtradb/include/page0zip.h b/storage/xtradb/include/page0zip.h index a33407e78bc..abd62ab99a5 100644 --- a/storage/xtradb/include/page0zip.h +++ b/storage/xtradb/include/page0zip.h @@ -402,8 +402,7 @@ page_zip_reorganize( out: data, n_blobs, m_start, m_end, m_nonempty */ dict_index_t* index, /*!< in: index of the B-tree node */ - mtr_t* mtr) /*!< in: mini-transaction */ - __attribute__((nonnull)); + mtr_t* mtr); /*!< in: mini-transaction */ #ifndef UNIV_HOTBACKUP /**********************************************************************//** Copy the records of a page byte for byte. Do not copy the page header @@ -436,7 +435,7 @@ page_zip_parse_compress( byte* end_ptr,/*!< in: buffer end */ page_t* page, /*!< out: uncompressed page */ page_zip_des_t* page_zip)/*!< out: compressed page */ - __attribute__((nonnull(1,2))); + __attribute__((warn_unused_result)); /**********************************************************************//** Calculate the compressed page checksum. diff --git a/storage/xtradb/include/rem0rec.h b/storage/xtradb/include/rem0rec.h index 9dd96f609ea..18e89eacccd 100644 --- a/storage/xtradb/include/rem0rec.h +++ b/storage/xtradb/include/rem0rec.h @@ -626,8 +626,7 @@ rec_copy( /*=====*/ void* buf, /*!< in: buffer */ const rec_t* rec, /*!< in: physical record */ - const ulint* offsets)/*!< in: array returned by rec_get_offsets() */ - __attribute__((nonnull)); + const ulint* offsets);/*!< in: array returned by rec_get_offsets() */ #ifndef UNIV_HOTBACKUP /**********************************************************//** Determines the size of a data tuple prefix in a temporary file. diff --git a/storage/xtradb/include/row0upd.h b/storage/xtradb/include/row0upd.h index 16c069d5ae8..e23a71374c2 100644 --- a/storage/xtradb/include/row0upd.h +++ b/storage/xtradb/include/row0upd.h @@ -232,9 +232,8 @@ row_upd_index_replace_new_col_vals_index_pos( /*!< in: if TRUE, limit the replacement to ordering fields of index; note that this does not work for non-clustered indexes. */ - mem_heap_t* heap) /*!< in: memory heap for allocating and + mem_heap_t* heap); /*!< in: memory heap for allocating and copying the new values */ - __attribute__((nonnull)); /***********************************************************//** Replaces the new column values stored in the update vector to the index entry given. */ @@ -295,7 +294,7 @@ row_upd_changes_ord_field_binary_func( compile time */ const row_ext_t*ext) /*!< NULL, or prefixes of the externally stored columns in the old row */ - __attribute__((nonnull(1,2), warn_unused_result)); + __attribute__((warn_unused_result)); #ifdef UNIV_DEBUG # define row_upd_changes_ord_field_binary(index,update,thr,row,ext) \ row_upd_changes_ord_field_binary_func(index,update,thr,row,ext) diff --git a/storage/xtradb/include/trx0trx.h b/storage/xtradb/include/trx0trx.h index b223f7cb39c..17f26956e78 100644 --- a/storage/xtradb/include/trx0trx.h +++ b/storage/xtradb/include/trx0trx.h @@ -90,7 +90,7 @@ trx_t* trx_create( /*=======*/ sess_t* sess) /*!< in: session */ - __attribute__((nonnull)); + __attribute__((warn_unused_result)); /********************************************************************//** Creates a transaction object for MySQL. @return own: transaction object */ @@ -119,7 +119,7 @@ void trx_free_prepared( /*==============*/ trx_t* trx) /*!< in, own: trx object */ - UNIV_COLD __attribute__((nonnull)); + UNIV_COLD; /********************************************************************//** Frees a transaction object for MySQL. */ UNIV_INTERN diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i index d198fbf021b..a7475bbf396 100644 --- a/storage/xtradb/include/univ.i +++ b/storage/xtradb/include/univ.i @@ -64,7 +64,7 @@ component, i.e. we show M.N.P as M.N */ (INNODB_VERSION_MAJOR << 8 | INNODB_VERSION_MINOR) #ifndef PERCONA_INNODB_VERSION -#define PERCONA_INNODB_VERSION 38.5 +#define PERCONA_INNODB_VERSION 38.8 #endif #define INNODB_VERSION_STR MYSQL_SERVER_VERSION diff --git a/storage/xtradb/log/log0online.c b/storage/xtradb/log/log0online.c index fa2c8b882bf..45739dffa5d 100644 --- a/storage/xtradb/log/log0online.c +++ b/storage/xtradb/log/log0online.c @@ -84,12 +84,14 @@ struct log_bitmap_struct { both the correct type and the tree does not mind its overwrite during rbt_next() tree traversal. */ - mutex_t mutex; /*!< mutex protecting all the fields.*/ }; /* The log parsing and bitmap output struct instance */ static struct log_bitmap_struct* log_bmp_sys; +/* Mutex protecting log_bmp_sys */ +static mutex_t log_bmp_sys_mutex; + /** File name stem for bitmap files. */ static const char* bmp_file_name_stem = "ib_modified_log_"; @@ -188,7 +190,7 @@ log_online_set_page_bit( byte search_page[MODIFIED_PAGE_BLOCK_SIZE]; byte *page_ptr; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); ut_a(space != ULINT_UNDEFINED); ut_a(page_no != ULINT_UNDEFINED); @@ -339,7 +341,7 @@ log_online_read_last_tracked_lsn(void) ib_uint64_t result; ib_uint64_t read_offset = log_bmp_sys->out.offset; - while (!checksum_ok && read_offset > 0 && !is_last_page) + while ((!checksum_ok || !is_last_page) && read_offset > 0) { read_offset -= MODIFIED_PAGE_BLOCK_SIZE; log_bmp_sys->out.offset = read_offset; @@ -609,12 +611,19 @@ log_online_is_bitmap_file( && (!strcmp(stem, bmp_file_name_stem))); } -/*********************************************************************//** -Initialize the online log following subsytem. */ +/** Initialize the constant part of the log tracking subsystem */ +UNIV_INTERN +void +log_online_init(void) +{ + mutex_create(log_bmp_sys_mutex_key, &log_bmp_sys_mutex, + SYNC_LOG_ONLINE); +} + +/** Initialize the dynamic part of the log tracking subsystem */ UNIV_INTERN void log_online_read_init(void) -/*======================*/ { ibool success; ib_uint64_t tracking_start_lsn @@ -635,9 +644,6 @@ log_online_read_init(void) log_bmp_sys->read_buf = ut_align(log_bmp_sys->read_buf_ptr, OS_FILE_LOG_BLOCK_SIZE); - mutex_create(log_bmp_sys_mutex_key, &log_bmp_sys->mutex, - SYNC_LOG_ONLINE); - /* Initialize bitmap file directory from srv_data_home and add a path separator if needed. */ srv_data_home_len = strlen(srv_data_home); @@ -720,6 +726,7 @@ log_online_read_init(void) ulint size_high; ib_uint64_t last_tracked_lsn; ib_uint64_t file_start_lsn; + ibool need_rotate; success = os_file_get_size(log_bmp_sys->out.file, &size_low, &size_high); @@ -742,7 +749,11 @@ log_online_read_init(void) } last_tracked_lsn = log_online_read_last_tracked_lsn(); + /* Do not rotate if we truncated the file to zero length - we + can just start writing there */ + need_rotate = (last_tracked_lsn != 0); if (!last_tracked_lsn) { + last_tracked_lsn = last_file_start_lsn; } @@ -754,7 +765,10 @@ log_online_read_init(void) } else { file_start_lsn = tracking_start_lsn; } - if (!log_online_rotate_bitmap_file(file_start_lsn)) { + + if (need_rotate + && !log_online_rotate_bitmap_file(file_start_lsn)) { + exit(1); } @@ -782,14 +796,18 @@ log_online_read_init(void) log_set_tracked_lsn(tracking_start_lsn); } -/*********************************************************************//** -Shut down the online log following subsystem. */ +/** Shut down the dynamic part of the log tracking subsystem */ UNIV_INTERN void log_online_read_shutdown(void) -/*==========================*/ { - ib_rbt_node_t *free_list_node = log_bmp_sys->page_free_list; + ib_rbt_node_t *free_list_node; + + mutex_enter(&log_bmp_sys_mutex); + + srv_track_changed_pages = FALSE; + + free_list_node = log_bmp_sys->page_free_list; if (log_bmp_sys->out.file != os_file_invalid) { os_file_close(log_bmp_sys->out.file); @@ -804,10 +822,21 @@ log_online_read_shutdown(void) free_list_node = next; } - mutex_free(&log_bmp_sys->mutex); - ut_free(log_bmp_sys->read_buf_ptr); ut_free(log_bmp_sys); + log_bmp_sys = NULL; + + srv_redo_log_thread_started = FALSE; + + mutex_exit(&log_bmp_sys_mutex); +} + +/** Shut down the constant part of the log tracking subsystem */ +UNIV_INTERN +void +log_online_shutdown(void) +{ + mutex_free(&log_bmp_sys_mutex); } /*********************************************************************//** @@ -858,7 +887,7 @@ log_online_parse_redo_log(void) ulint len = 0; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); while (ptr != end && log_bmp_sys->next_parse_lsn < log_bmp_sys->end_lsn) { @@ -950,7 +979,7 @@ log_online_add_to_parse_buf( ulint actual_data_len = (end_offset >= start_offset) ? end_offset - start_offset : 0; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); ut_memcpy(log_bmp_sys->parse_buf_end, log_block + start_offset, actual_data_len); @@ -976,7 +1005,7 @@ log_online_parse_redo_log_block( { ulint block_data_len; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); block_data_len = log_block_get_data_len(log_block); @@ -1004,7 +1033,7 @@ log_online_follow_log_seg( byte* log_block_end = log_bmp_sys->read_buf + (block_end_lsn - block_start_lsn); - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); mutex_enter(&log_sys->mutex); log_group_read_log_seg(LOG_RECOVER, log_bmp_sys->read_buf, @@ -1068,7 +1097,7 @@ log_online_follow_log_group( ib_uint64_t block_start_lsn = contiguous_lsn; ib_uint64_t block_end_lsn; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); log_bmp_sys->next_parse_lsn = log_bmp_sys->start_lsn; log_bmp_sys->parse_buf_end = log_bmp_sys->parse_buf; @@ -1108,10 +1137,35 @@ log_online_write_bitmap_page( { ibool success; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); /* Simulate a write error */ - DBUG_EXECUTE_IF("bitmap_page_write_error", return FALSE;); + DBUG_EXECUTE_IF("bitmap_page_write_error", + { + ulint space_id + = mach_read_from_4(block + + MODIFIED_PAGE_SPACE_ID); + if (space_id > 0) { + fprintf(stderr, "InnoDB: Error: " + "simulating bitmap write " + "error in " + "log_online_write_bitmap_page " + "for space ID %lu\n", + space_id); + return FALSE; + } + }); + + /* A crash injection site that ensures last checkpoint LSN > last + tracked LSN, so that LSN tracking for this interval is tested. */ + DBUG_EXECUTE_IF("crash_before_bitmap_write", + { + ulint space_id + = mach_read_from_4(block + + MODIFIED_PAGE_SPACE_ID); + if (space_id > 0) + DBUG_SUICIDE(); + }); success = os_file_write(log_bmp_sys->out.name, log_bmp_sys->out.file, block, @@ -1161,7 +1215,7 @@ log_online_write_bitmap(void) const ib_rbt_node_t *last_bmp_tree_node; ibool success = TRUE; - ut_ad(mutex_own(&log_bmp_sys->mutex)); + ut_ad(mutex_own(&log_bmp_sys_mutex)); if (log_bmp_sys->out.offset >= srv_max_bitmap_file_size) { if (!log_online_rotate_bitmap_file(log_bmp_sys->start_lsn)) { @@ -1204,7 +1258,11 @@ log_online_write_bitmap(void) rbt_next(log_bmp_sys->modified_pages, bmp_tree_node); DBUG_EXECUTE_IF("bitmap_page_2_write_error", - DBUG_SET("+d,bitmap_page_write_error");); + if (bmp_tree_node) + { + DBUG_SET("+d,bitmap_page_write_error"); + DBUG_SET("-d,bitmap_page_2_write_error"); + }); } rbt_reset(log_bmp_sys->modified_pages); @@ -1225,11 +1283,16 @@ log_online_follow_redo_log(void) log_group_t* group; ibool result; - mutex_enter(&log_bmp_sys->mutex); + if (!srv_track_changed_pages) + return TRUE; + + DEBUG_SYNC_C("log_online_follow_redo_log"); + + mutex_enter(&log_bmp_sys_mutex); if (!srv_track_changed_pages) { - mutex_exit(&log_bmp_sys->mutex); - return FALSE; + mutex_exit(&log_bmp_sys_mutex); + return TRUE; } /* Grab the LSN of the last checkpoint, we will parse up to it */ @@ -1238,7 +1301,7 @@ log_online_follow_redo_log(void) mutex_exit(&(log_sys->mutex)); if (log_bmp_sys->end_lsn == log_bmp_sys->start_lsn) { - mutex_exit(&log_bmp_sys->mutex); + mutex_exit(&log_bmp_sys_mutex); return TRUE; } @@ -1253,15 +1316,11 @@ log_online_follow_redo_log(void) group = UT_LIST_GET_NEXT(log_groups, group); } - /* A crash injection site that ensures last checkpoint LSN > last - tracked LSN, so that LSN tracking for this interval is tested. */ - DBUG_EXECUTE_IF("crash_before_bitmap_write", DBUG_SUICIDE();); - result = log_online_write_bitmap(); log_bmp_sys->start_lsn = log_bmp_sys->end_lsn; log_set_tracked_lsn(log_bmp_sys->start_lsn); - mutex_exit(&log_bmp_sys->mutex); + mutex_exit(&log_bmp_sys_mutex); return result; } @@ -1608,6 +1667,8 @@ log_online_bitmap_iterator_init( { ut_a(i); + i->max_lsn = max_lsn; + if (UNIV_UNLIKELY(min_lsn > max_lsn)) { /* Empty range */ @@ -1716,6 +1777,9 @@ log_online_bitmap_iterator_next( return TRUE; } + if (i->end_lsn >= i->max_lsn && i->last_page_in_run) + return FALSE; + while (!checksum_ok) { while (i->in.size < MODIFIED_PAGE_BLOCK_SIZE @@ -1808,6 +1872,7 @@ log_online_purge_changed_page_bitmaps( log_online_bitmap_file_range_t bitmap_files; size_t i; ibool result = FALSE; + ibool log_bmp_sys_inited = FALSE; if (lsn == 0) { lsn = IB_ULONGLONG_MAX; @@ -1816,13 +1881,18 @@ log_online_purge_changed_page_bitmaps( if (srv_redo_log_thread_started) { /* User requests might happen with both enabled and disabled tracking */ - mutex_enter(&log_bmp_sys->mutex); + log_bmp_sys_inited = TRUE; + mutex_enter(&log_bmp_sys_mutex); + if (!srv_redo_log_thread_started) { + log_bmp_sys_inited = FALSE; + mutex_exit(&log_bmp_sys_mutex); + } } if (!log_online_setup_bitmap_file_range(&bitmap_files, 0, IB_ULONGLONG_MAX)) { - if (srv_redo_log_thread_started) { - mutex_exit(&log_bmp_sys->mutex); + if (log_bmp_sys_inited) { + mutex_exit(&log_bmp_sys_mutex); } return TRUE; } @@ -1858,7 +1928,7 @@ log_online_purge_changed_page_bitmaps( } } - if (srv_redo_log_thread_started) { + if (log_bmp_sys_inited) { if (lsn > log_bmp_sys->end_lsn) { ib_uint64_t new_file_lsn; if (lsn == IB_ULONGLONG_MAX) { @@ -1874,7 +1944,7 @@ log_online_purge_changed_page_bitmaps( } } - mutex_exit(&log_bmp_sys->mutex); + mutex_exit(&log_bmp_sys_mutex); } free(bitmap_files.files); diff --git a/storage/xtradb/mach/mach0data.c b/storage/xtradb/mach/mach0data.c index 00378f036c9..9669516244d 100644 --- a/storage/xtradb/mach/mach0data.c +++ b/storage/xtradb/mach/mach0data.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2016, 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 @@ -55,7 +55,6 @@ mach_parse_compressed( if (flag < 0x80UL) { *val = flag; return(ptr + 1); - } /* Workaround GCC bug @@ -64,7 +63,11 @@ mach_parse_compressed( function, causing and out-of-bounds read if we are reading a short integer close to the end of buffer. */ #if defined(__GNUC__) && (__GNUC__ >= 5) && !defined(__clang__) - asm volatile("": : :"memory"); +#define DEPLOY_FENCE +#endif + +#ifdef DEPLOY_FENCE + __atomic_thread_fence(__ATOMIC_ACQUIRE); #endif if (flag < 0xC0UL) { @@ -75,8 +78,13 @@ mach_parse_compressed( *val = mach_read_from_2(ptr) & 0x7FFFUL; return(ptr + 2); + } - } else if (flag < 0xE0UL) { +#ifdef DEPLOY_FENCE + __atomic_thread_fence(__ATOMIC_ACQUIRE); +#endif + + if (flag < 0xE0UL) { if (end_ptr < ptr + 3) { return(NULL); } @@ -84,7 +92,13 @@ mach_parse_compressed( *val = mach_read_from_3(ptr) & 0x3FFFFFUL; return(ptr + 3); - } else if (flag < 0xF0UL) { + } + +#ifdef DEPLOY_FENCE + __atomic_thread_fence(__ATOMIC_ACQUIRE); +#endif + + if (flag < 0xF0UL) { if (end_ptr < ptr + 4) { return(NULL); } @@ -92,14 +106,20 @@ mach_parse_compressed( *val = mach_read_from_4(ptr) & 0x1FFFFFFFUL; return(ptr + 4); - } else { - ut_ad(flag == 0xF0UL); + } - if (end_ptr < ptr + 5) { - return(NULL); - } +#ifdef DEPLOY_FENCE + __atomic_thread_fence(__ATOMIC_ACQUIRE); +#endif - *val = mach_read_from_4(ptr + 1); - return(ptr + 5); +#undef DEPLOY_FENCE + + ut_ad(flag == 0xF0UL); + + if (end_ptr < ptr + 5) { + return(NULL); } + + *val = mach_read_from_4(ptr + 1); + return(ptr + 5); } diff --git a/storage/xtradb/os/os0file.c b/storage/xtradb/os/os0file.c index 21f8c3eed11..25692e73db1 100644 --- a/storage/xtradb/os/os0file.c +++ b/storage/xtradb/os/os0file.c @@ -961,50 +961,15 @@ next_file: char* full_path; int ret; struct stat statinfo; -#ifdef HAVE_READDIR_R - char dirent_buf[sizeof(struct dirent) - + _POSIX_PATH_MAX + 100]; - /* In /mysys/my_lib.c, _POSIX_PATH_MAX + 1 is used as - the max file name len; but in most standards, the - length is NAME_MAX; we add 100 to be even safer */ -#endif next_file: -#ifdef HAVE_READDIR_R - ret = readdir_r(dir, (struct dirent*)dirent_buf, &ent); - - if (ret != 0 -#ifdef UNIV_AIX - /* On AIX, only if we got non-NULL 'ent' (result) value and - a non-zero 'ret' (return) value, it indicates a failed - readdir_r() call. An NULL 'ent' with an non-zero 'ret' - would indicate the "end of the directory" is reached. */ - && ent != NULL -#endif - ) { - fprintf(stderr, - "InnoDB: cannot read directory %s, error %lu\n", - dirname, (ulong)ret); - - return(-1); - } - - if (ent == NULL) { - /* End of directory */ - - return(1); - } - - ut_a(strlen(ent->d_name) < _POSIX_PATH_MAX + 100 - 1); -#else ent = readdir(dir); if (ent == NULL) { return(1); } -#endif ut_a(strlen(ent->d_name) < OS_FILE_MAX_PATH); if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) { @@ -1382,9 +1347,10 @@ os_file_create_simple_no_error_handling_func( } /****************************************************************//** -Tries to disable OS caching on an opened file descriptor. */ +Tries to disable OS caching on an opened file descriptor. +@return TRUE if operation is success and FALSE otherwise */ UNIV_INTERN -void +ibool os_file_set_nocache( /*================*/ int fd /*!< in: file descriptor to alter */ @@ -1405,6 +1371,7 @@ os_file_set_nocache( " InnoDB: Failed to set DIRECTIO_ON " "on file %s: %s: %s, continuing anyway\n", file_name, operation_name, strerror(errno_save)); + return FALSE; } #elif defined(O_DIRECT) if (fcntl(fd, F_SETFL, O_DIRECT) == -1) { @@ -1422,8 +1389,10 @@ os_file_set_nocache( "'Invalid argument' on Linux on tmpfs, " "see MySQL Bug#26662\n"); } + return FALSE; } #endif + return TRUE; } /****************************************************************//** @@ -1699,7 +1668,11 @@ try_again: /* ALL_O_DIRECT: O_DIRECT also for transaction log file */ if (srv_unix_file_flush_method == SRV_UNIX_ALL_O_DIRECT) { - os_file_set_nocache(file, name, mode_str); + /* Do fsync() on log files when setting O_DIRECT fails. + See log_io_complete() */ + if (!os_file_set_nocache(file, name, mode_str)) { + srv_unix_file_flush_method = SRV_UNIX_O_DIRECT; + } } #ifdef USE_FILE_LOCK diff --git a/storage/xtradb/rem/rem0rec.c b/storage/xtradb/rem/rem0rec.c index d938aa696dd..5d55fa1add0 100644 --- a/storage/xtradb/rem/rem0rec.c +++ b/storage/xtradb/rem/rem0rec.c @@ -774,7 +774,7 @@ rec_get_nth_field_offs_old( /**********************************************************//** Determines the size of a data tuple prefix in ROW_FORMAT=COMPACT. @return total size */ -UNIV_INLINE __attribute__((warn_unused_result, nonnull(1,2))) +UNIV_INLINE __attribute__((warn_unused_result)) ulint rec_get_converted_size_comp_prefix_low( /*===================================*/ diff --git a/storage/xtradb/row/row0merge.c b/storage/xtradb/row/row0merge.c index 746eb8be261..580eca1efee 100644 --- a/storage/xtradb/row/row0merge.c +++ b/storage/xtradb/row/row0merge.c @@ -802,7 +802,7 @@ row_merge_write( /********************************************************************//** Read a merge record. @return pointer to next record, or NULL on I/O error or end of list */ -static __attribute__((nonnull)) +static __attribute__((warn_unused_result)) const byte* row_merge_read_rec( /*===============*/ @@ -1168,7 +1168,7 @@ row_merge_cmp( Reads clustered index of the table and create temporary files containing the index entries for the indexes to be built. @return DB_SUCCESS or error */ -static __attribute__((nonnull)) +static __attribute__((warn_unused_result)) ulint row_merge_read_clustered_index( /*===========================*/ diff --git a/storage/xtradb/row/row0purge.c b/storage/xtradb/row/row0purge.c index 9018582f5d6..0187199f4f5 100644 --- a/storage/xtradb/row/row0purge.c +++ b/storage/xtradb/row/row0purge.c @@ -742,7 +742,7 @@ err_exit: Fetches an undo log record and does the purge for the recorded operation. If none left, or the current purge completed, returns the control to the parent node, which is always a query thread node. */ -static __attribute__((nonnull)) +static void row_purge( /*======*/ diff --git a/storage/xtradb/srv/srv0srv.c b/storage/xtradb/srv/srv0srv.c index 0acce91f2c4..3770a8804dd 100644 --- a/storage/xtradb/srv/srv0srv.c +++ b/storage/xtradb/srv/srv0srv.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, 2009 Google Inc. Copyright (c) 2009, Percona Inc. @@ -3208,10 +3208,8 @@ srv_redo_log_follow_thread( } while (srv_shutdown_state < SRV_SHUTDOWN_LAST_PHASE); - srv_track_changed_pages = FALSE; log_online_read_shutdown(); os_event_set(srv_redo_log_thread_finished_event); - srv_redo_log_thread_started = FALSE; /* Defensive, not required */ my_thread_end(); os_thread_exit(NULL); @@ -3390,6 +3388,7 @@ srv_master_thread( ib_uint64_t oldest_lsn; ib_time_t last_print_time; + my_thread_init(); #ifdef UNIV_DEBUG_THREAD_CREATION fprintf(stderr, "Master thread starts, id %lu\n", os_thread_pf(os_thread_get_curr_id())); @@ -4093,6 +4092,7 @@ suspend_thread: os_event_wait(slot->event); if (srv_shutdown_state == SRV_SHUTDOWN_EXIT_THREADS) { + my_thread_end(); os_thread_exit(NULL); } @@ -4117,6 +4117,7 @@ srv_purge_thread( ulint n_total_purged = ULINT_UNDEFINED; ulint next_itr_time; + my_thread_init(); ut_a(srv_n_purge_threads == 1); #ifdef UNIV_PFS_THREAD @@ -4222,6 +4223,8 @@ srv_purge_thread( os_thread_pf(os_thread_get_curr_id())); #endif /* UNIV_DEBUG_THREAD_CREATION */ + my_thread_end(); + /* We count the number of threads in os_thread_exit(). A created thread should always use that to exit and not use return() to exit. */ os_thread_exit(NULL); diff --git a/storage/xtradb/srv/srv0start.c b/storage/xtradb/srv/srv0start.c index 2d39cddbcce..ade62aa2797 100644 --- a/storage/xtradb/srv/srv0start.c +++ b/storage/xtradb/srv/srv0start.c @@ -1619,6 +1619,7 @@ innobase_start_or_create_for_mysql(void) fsp_init(); log_init(); + log_online_init(); lock_sys_create(srv_lock_table_size); @@ -2465,6 +2466,7 @@ innobase_shutdown_for_mysql(void) btr_search_disable(); ibuf_close(); + log_online_shutdown(); log_shutdown(); trx_sys_file_format_close(); trx_sys_close(); diff --git a/storage/xtradb/trx/trx0roll.c b/storage/xtradb/trx/trx0roll.c index 25c1d5d4692..96a679a243d 100644 --- a/storage/xtradb/trx/trx0roll.c +++ b/storage/xtradb/trx/trx0roll.c @@ -1,6 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2017, 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 @@ -610,12 +611,15 @@ trx_rollback_or_clean_all_recovered( /*!< in: a dummy parameter required by os_thread_create */ { + my_thread_init(); + #ifdef UNIV_PFS_THREAD pfs_register_thread(trx_rollback_clean_thread_key); #endif /* UNIV_PFS_THREAD */ trx_rollback_or_clean_recovered(TRUE); + my_thread_end(); /* We count the number of threads in os_thread_exit(). A created thread should always use that to exit and not use return() to exit. */ -- cgit v1.2.1 From d1b3e428d4843b83ef2ea7443ba61a9b7f6bf999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 20 Jul 2017 11:24:01 +0300 Subject: MDEV-13227: Assertion failure len < 16384 in file rem0rec.cc line 1285 Crashes with innodb_page_size=64K. Does not crash at <= 32K. Problem was that when blob record that was earlier < 16k is enlarged at update wo that length > 16K it should be stored externally. However, that was not enforced when page-size = 64K (note that 16K+1 < 64K/2 i.e. half of the btree leaf page). btr_cur_optimistic_update: limit max record size to 16K or in REDUNDANT row format to 16K-1. --- storage/innobase/btr/btr0cur.cc | 8 ++++---- storage/xtradb/btr/btr0cur.cc | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'storage') diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc index 2ae6da00549..d848ee538c6 100644 --- a/storage/innobase/btr/btr0cur.cc +++ b/storage/innobase/btr/btr0cur.cc @@ -2316,10 +2316,10 @@ any_extern: rec = page_cur_get_rec(page_cursor); } - /* We limit max record size to 16k for 64k page size. */ - if (!dict_table_is_comp(index->table) - && new_rec_size > REDUNDANT_REC_MAX_DATA_SIZE) { - ut_ad(srv_page_size == UNIV_PAGE_SIZE_MAX); + /* We limit max record size to 16k even for 64k page size. */ + if (new_rec_size >= COMPRESSED_REC_MAX_DATA_SIZE || + (!dict_table_is_comp(index->table) + && new_rec_size >= REDUNDANT_REC_MAX_DATA_SIZE)) { err = DB_OVERFLOW; goto func_exit; diff --git a/storage/xtradb/btr/btr0cur.cc b/storage/xtradb/btr/btr0cur.cc index 6480b756f4e..1a27fd0d6ea 100644 --- a/storage/xtradb/btr/btr0cur.cc +++ b/storage/xtradb/btr/btr0cur.cc @@ -2466,10 +2466,10 @@ any_extern: rec = page_cur_get_rec(page_cursor); } - /* We limit max record size to 16k for 64k page size. */ - if (!dict_table_is_comp(index->table) - && new_rec_size > REDUNDANT_REC_MAX_DATA_SIZE) { - ut_ad(srv_page_size == UNIV_PAGE_SIZE_MAX); + /* We limit max record size to 16k even for 64k page size. */ + if (new_rec_size >= COMPRESSED_REC_MAX_DATA_SIZE || + (!dict_table_is_comp(index->table) + && new_rec_size >= REDUNDANT_REC_MAX_DATA_SIZE)) { err = DB_OVERFLOW; goto func_exit; -- cgit v1.2.1 From da2a838628796453c6ab93d51eca9e5aae45791d Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 19 Jul 2017 19:46:07 +0200 Subject: MDEV-12824 GCC 7 warning: this statement may fall through [-Wimplicit-fallthrough=] --- storage/federated/ha_federated.cc | 2 ++ storage/federatedx/ha_federatedx.cc | 2 ++ storage/heap/hp_extra.c | 1 + storage/maria/ma_key_recover.c | 1 + 4 files changed, 6 insertions(+) (limited to 'storage') diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc index 927921d6df4..401e1b35bb1 100644 --- a/storage/federated/ha_federated.cc +++ b/storage/federated/ha_federated.cc @@ -1423,6 +1423,7 @@ bool ha_federated::create_where_from_key(String *to, } break; } + /* fall through */ case HA_READ_KEY_OR_NEXT: DBUG_PRINT("info", ("federated HA_READ_KEY_OR_NEXT %d", i)); if (emit_key_part_name(&tmp, key_part) || @@ -1442,6 +1443,7 @@ bool ha_federated::create_where_from_key(String *to, goto err; break; } + /* fall through */ case HA_READ_KEY_OR_PREV: DBUG_PRINT("info", ("federated HA_READ_KEY_OR_PREV %d", i)); if (emit_key_part_name(&tmp, key_part) || diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index aae26758c78..0a24fe9c910 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -1342,6 +1342,7 @@ bool ha_federatedx::create_where_from_key(String *to, } break; } + /* fall through */ case HA_READ_KEY_OR_NEXT: DBUG_PRINT("info", ("federatedx HA_READ_KEY_OR_NEXT %d", i)); if (emit_key_part_name(&tmp, key_part) || @@ -1361,6 +1362,7 @@ bool ha_federatedx::create_where_from_key(String *to, goto err; break; } + /* fall through */ case HA_READ_KEY_OR_PREV: DBUG_PRINT("info", ("federatedx HA_READ_KEY_OR_PREV %d", i)); if (emit_key_part_name(&tmp, key_part) || diff --git a/storage/heap/hp_extra.c b/storage/heap/hp_extra.c index c83efd5af61..9a19f818d3b 100644 --- a/storage/heap/hp_extra.c +++ b/storage/heap/hp_extra.c @@ -34,6 +34,7 @@ int heap_extra(register HP_INFO *info, enum ha_extra_function function) switch (function) { case HA_EXTRA_RESET_STATE: heap_reset(info); + /* fall through */ case HA_EXTRA_NO_READCHECK: info->opt_flag&= ~READ_CHECK_USED; /* No readcheck */ break; diff --git a/storage/maria/ma_key_recover.c b/storage/maria/ma_key_recover.c index ae9427981ea..3f91f233cb6 100644 --- a/storage/maria/ma_key_recover.c +++ b/storage/maria/ma_key_recover.c @@ -1169,6 +1169,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, goto err; } page_length= page.size; + break; } case KEY_OP_NONE: default: -- cgit v1.2.1 From 92cbe388b6839bc1e21abb9859c54c58fc1769cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Fri, 21 Jul 2017 16:05:20 +0300 Subject: MDEV-13325: InnoDB assert dict_sys->size > 0 during ALTER TABLE Problem was that dict_sys->size tries to maintain used memory occupied by the data dictionary table and index objects. However at least on table objects table->heap size can increase between when table object is inserted to dict_sys and when it is removed from dict_sys causing inconsistency on amount of memory added to and removed from dict_sys->size variable. Removed unnecessary dict_sys:size variable as it is really used only for status output. Introduced dict_sys_get_size function to calculate memory occupied by the data dictionary table and index objects that is then used on show engine innodb output. dict_table_add_to_cache(), dict_table_rename_in_cache(), dict_table_remove_from_cache_low(), dict_index_remove_from_cache_low(), Remove size calculation. srv_printf_innodb_monitor(): Use dict_sys_get_size function to get dictionary memory allocated. xtradb_internal_hash_tables_fill_table(): Use dict_sys_get_size function to get dictionary memory allocated. --- storage/innobase/dict/dict0dict.cc | 57 ++++++++++++++++++++++-------------- storage/innobase/include/dict0dict.h | 10 +++++-- storage/innobase/srv/srv0srv.cc | 2 +- storage/xtradb/dict/dict0dict.cc | 57 ++++++++++++++++++++++-------------- storage/xtradb/handler/xtradb_i_s.cc | 5 ++-- storage/xtradb/include/dict0dict.h | 10 +++++-- storage/xtradb/srv/srv0srv.cc | 10 ++++--- 7 files changed, 94 insertions(+), 57 deletions(-) (limited to 'storage') diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc index b6ca02fa164..be19a3f1e75 100644 --- a/storage/innobase/dict/dict0dict.cc +++ b/storage/innobase/dict/dict0dict.cc @@ -1365,9 +1365,6 @@ dict_table_add_to_cache( dict_table_autoinc_restore(table); ut_ad(dict_lru_validate()); - - dict_sys->size += mem_heap_get_size(table->heap) - + strlen(table->name) + 1; } /**********************************************************************//** @@ -1782,9 +1779,6 @@ dict_table_rename_in_cache( HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold, table); - dict_sys->size += strlen(new_name) - strlen(old_name); - ut_a(dict_sys->size > 0); - /* Update the table_name field in indexes */ for (index = dict_table_get_first_index(table); index != NULL; @@ -2071,7 +2065,6 @@ dict_table_remove_from_cache_low( { dict_foreign_t* foreign; dict_index_t* index; - ulint size; ut_ad(table); ut_ad(dict_lru_validate()); @@ -2151,12 +2144,6 @@ dict_table_remove_from_cache_low( trx_free_for_background(trx); } - size = mem_heap_get_size(table->heap) + strlen(table->name) + 1; - - ut_ad(dict_sys->size >= size); - - dict_sys->size -= size; - dict_mem_table_free(table); } @@ -2692,8 +2679,6 @@ undo_size_ok: dict_index_is_ibuf(index) ? SYNC_IBUF_INDEX_TREE : SYNC_INDEX_TREE); - dict_sys->size += mem_heap_get_size(new_index->heap); - dict_mem_index_free(index); return(DB_SUCCESS); @@ -2710,7 +2695,6 @@ dict_index_remove_from_cache_low( ibool lru_evict) /*!< in: TRUE if index being evicted to make room in the table LRU list */ { - ulint size; ulint retries = 0; btr_search_t* info; @@ -2778,12 +2762,6 @@ dict_index_remove_from_cache_low( /* Remove the index from the list of indexes of the table */ UT_LIST_REMOVE(indexes, table->indexes, index); - size = mem_heap_get_size(index->heap); - - ut_ad(dict_sys->size >= size); - - dict_sys->size -= size; - dict_mem_index_free(index); } @@ -7258,3 +7236,38 @@ dict_tf_to_row_format_string( return(0); } #endif /* !UNIV_HOTBACKUP */ + +/** Calculate the used memory occupied by the data dictionary +table and index objects. +@return number of bytes occupied. */ +UNIV_INTERN +ulint +dict_sys_get_size() +{ + ulint size = 0; + + ut_ad(dict_sys); + + mutex_enter(&dict_sys->mutex); + + for(ulint i = 0; i < hash_get_n_cells(dict_sys->table_hash); i++) { + dict_table_t* table; + + for (table = static_cast(HASH_GET_FIRST(dict_sys->table_hash,i)); + table != NULL; + table = static_cast(HASH_GET_NEXT(name_hash, table))) { + dict_index_t* index; + size += mem_heap_get_size(table->heap) + strlen(table->name) +1; + + for(index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + size += mem_heap_get_size(index->heap); + } + } + } + + mutex_exit(&dict_sys->mutex); + + return (size); +} diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h index 7c00ac096cb..bee291910ed 100644 --- a/storage/innobase/include/dict0dict.h +++ b/storage/innobase/include/dict0dict.h @@ -1614,9 +1614,6 @@ struct dict_sys_t{ on name */ hash_table_t* table_id_hash; /*!< hash table of the tables, based on id */ - ulint size; /*!< varying space in bytes occupied - by the data dictionary table and - index objects */ dict_table_t* sys_tables; /*!< SYS_TABLES table */ dict_table_t* sys_columns; /*!< SYS_COLUMNS table */ dict_table_t* sys_indexes; /*!< SYS_INDEXES table */ @@ -1861,6 +1858,13 @@ dict_table_get_index_on_first_col( ulint col_index); /*!< in: position of column in table */ +/** Calculate the used memory occupied by the data dictionary +table and index objects. +@return number of bytes occupied. */ +UNIV_INTERN +ulint +dict_sys_get_size(); + #endif /* !UNIV_HOTBACKUP */ #ifndef UNIV_NONINL diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index 10baf546e5b..e552e54846f 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -1283,7 +1283,7 @@ srv_printf_innodb_monitor( ut_total_allocated_memory, mem_pool_get_reserved(mem_comm_pool)); fprintf(file, "Dictionary memory allocated " ULINTPF "\n", - dict_sys->size); + dict_sys_get_size()); buf_print_io(file); diff --git a/storage/xtradb/dict/dict0dict.cc b/storage/xtradb/dict/dict0dict.cc index 108bdd8f60b..567d24cd89d 100644 --- a/storage/xtradb/dict/dict0dict.cc +++ b/storage/xtradb/dict/dict0dict.cc @@ -1374,9 +1374,6 @@ dict_table_add_to_cache( dict_table_autoinc_restore(table); ut_ad(dict_lru_validate()); - - dict_sys->size += mem_heap_get_size(table->heap) - + strlen(table->name) + 1; } /**********************************************************************//** @@ -1791,9 +1788,6 @@ dict_table_rename_in_cache( HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold, table); - dict_sys->size += strlen(new_name) - strlen(old_name); - ut_a(dict_sys->size > 0); - /* Update the table_name field in indexes */ for (index = dict_table_get_first_index(table); index != NULL; @@ -2080,7 +2074,6 @@ dict_table_remove_from_cache_low( { dict_foreign_t* foreign; dict_index_t* index; - ulint size; ut_ad(table); ut_ad(dict_lru_validate()); @@ -2160,12 +2153,6 @@ dict_table_remove_from_cache_low( trx_free_for_background(trx); } - size = mem_heap_get_size(table->heap) + strlen(table->name) + 1; - - ut_ad(dict_sys->size >= size); - - dict_sys->size -= size; - dict_mem_table_free(table); } @@ -2701,8 +2688,6 @@ undo_size_ok: dict_index_is_ibuf(index) ? SYNC_IBUF_INDEX_TREE : SYNC_INDEX_TREE); - dict_sys->size += mem_heap_get_size(new_index->heap); - dict_mem_index_free(index); return(DB_SUCCESS); @@ -2719,7 +2704,6 @@ dict_index_remove_from_cache_low( ibool lru_evict) /*!< in: TRUE if index being evicted to make room in the table LRU list */ { - ulint size; ulint retries = 0; btr_search_t* info; @@ -2788,12 +2772,6 @@ dict_index_remove_from_cache_low( /* Remove the index from the list of indexes of the table */ UT_LIST_REMOVE(indexes, table->indexes, index); - size = mem_heap_get_size(index->heap); - - ut_ad(dict_sys->size >= size); - - dict_sys->size -= size; - dict_mem_index_free(index); } @@ -7296,3 +7274,38 @@ dict_tf_to_row_format_string( return(0); } #endif /* !UNIV_HOTBACKUP */ + +/** Calculate the used memory occupied by the data dictionary +table and index objects. +@return number of bytes occupied. */ +UNIV_INTERN +ulint +dict_sys_get_size() +{ + ulint size = 0; + + ut_ad(dict_sys); + + mutex_enter(&dict_sys->mutex); + + for(ulint i = 0; i < hash_get_n_cells(dict_sys->table_hash); i++) { + dict_table_t* table; + + for (table = static_cast(HASH_GET_FIRST(dict_sys->table_hash,i)); + table != NULL; + table = static_cast(HASH_GET_NEXT(name_hash, table))) { + dict_index_t* index; + size += mem_heap_get_size(table->heap) + strlen(table->name) +1; + + for(index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + size += mem_heap_get_size(index->heap); + } + } + } + + mutex_exit(&dict_sys->mutex); + + return (size); +} diff --git a/storage/xtradb/handler/xtradb_i_s.cc b/storage/xtradb/handler/xtradb_i_s.cc index 84c1e5852bc..6ae32d24c92 100644 --- a/storage/xtradb/handler/xtradb_i_s.cc +++ b/storage/xtradb/handler/xtradb_i_s.cc @@ -401,19 +401,20 @@ static int xtradb_internal_hash_tables_fill_table(THD* thd, TABLE_LIST* tables, if (dict_sys) { + ulint dict_size = dict_sys_get_size(); OK(field_store_string(fields[INT_HASH_TABLES_NAME], "Dictionary Cache")); OK(field_store_ulint(fields[INT_HASH_TABLES_TOTAL], ((dict_sys->table_hash->n_cells + dict_sys->table_id_hash->n_cells ) * sizeof(hash_cell_t) - + dict_sys->size))); + + dict_size))); OK(field_store_ulint(fields[INT_HASH_TABLES_CONSTANT], ((dict_sys->table_hash->n_cells + dict_sys->table_id_hash->n_cells ) * sizeof(hash_cell_t)))); OK(field_store_ulint(fields[INT_HASH_TABLES_VARIABLE], - dict_sys->size)); + dict_size)); OK(schema_table_store_record(thd, table)); } diff --git a/storage/xtradb/include/dict0dict.h b/storage/xtradb/include/dict0dict.h index ef6c32b1787..33edab3ae98 100644 --- a/storage/xtradb/include/dict0dict.h +++ b/storage/xtradb/include/dict0dict.h @@ -1617,9 +1617,6 @@ struct dict_sys_t{ on name */ hash_table_t* table_id_hash; /*!< hash table of the tables, based on id */ - ulint size; /*!< varying space in bytes occupied - by the data dictionary table and - index objects */ dict_table_t* sys_tables; /*!< SYS_TABLES table */ dict_table_t* sys_columns; /*!< SYS_COLUMNS table */ dict_table_t* sys_indexes; /*!< SYS_INDEXES table */ @@ -1863,6 +1860,13 @@ dict_table_get_index_on_first_col( ulint col_index); /*!< in: position of column in table */ +/** Calculate the used memory occupied by the data dictionary +table and index objects. +@return number of bytes occupied. */ +UNIV_INTERN +ulint +dict_sys_get_size(); + #endif /* !UNIV_HOTBACKUP */ /************************************************************************* set is_corrupt flag by space_id*/ diff --git a/storage/xtradb/srv/srv0srv.cc b/storage/xtradb/srv/srv0srv.cc index e11697081c6..6a119756401 100644 --- a/storage/xtradb/srv/srv0srv.cc +++ b/storage/xtradb/srv/srv0srv.cc @@ -1520,6 +1520,8 @@ srv_printf_innodb_monitor( recv_sys_subtotal = ((recv_sys && recv_sys->addr_hash) ? mem_heap_get_size(recv_sys->heap) : 0); + ulint dict_size = dict_sys ? dict_sys_get_size() : 0; + fprintf(file, "Internal hash tables (constant factor + variable factor)\n" " Adaptive hash index %lu \t(%lu + " ULINTPF ")\n" @@ -1538,11 +1540,11 @@ srv_printf_innodb_monitor( (ulong) (dict_sys ? ((dict_sys->table_hash->n_cells + dict_sys->table_id_hash->n_cells ) * sizeof(hash_cell_t) - + dict_sys->size) : 0), + + dict_size) : 0), (ulong) (dict_sys ? ((dict_sys->table_hash->n_cells + dict_sys->table_id_hash->n_cells ) * sizeof(hash_cell_t)) : 0), - dict_sys ? (dict_sys->size) : 0, + dict_size, (ulong) (fil_system_hash_cells() * sizeof(hash_cell_t) + fil_system_hash_nodes()), @@ -1563,7 +1565,7 @@ srv_printf_innodb_monitor( fprintf(file, "Dictionary memory allocated " ULINTPF "\n", - dict_sys ? dict_sys->size : 0); + dict_sys ? dict_sys_get_size() : 0); buf_print_io(file); @@ -1719,7 +1721,7 @@ srv_export_innodb_status(void) mem_dictionary = (dict_sys ? ((dict_sys->table_hash->n_cells + dict_sys->table_id_hash->n_cells ) * sizeof(hash_cell_t) - + dict_sys->size) : 0); + + dict_sys_get_size()) : 0); mutex_enter(&srv_innodb_monitor_mutex); -- cgit v1.2.1 From 2ce3f95151a424f950be40140c45b0ba583e07ab Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sat, 22 Jul 2017 13:10:10 +0200 Subject: Connect engine is Gamma --- storage/connect/ha_connect.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'storage') diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index c30ab9adf4e..89dc1502656 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -7083,6 +7083,6 @@ maria_declare_plugin(connect) NULL, /* status variables */ connect_system_variables, /* system variables */ "1.06.0001", /* string version */ - MariaDB_PLUGIN_MATURITY_BETA /* maturity */ + MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */ } maria_declare_plugin_end; -- cgit v1.2.1 From d36bd69790c5b27007800964cc1a8bebd9ac7fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Sat, 29 Jul 2017 19:59:51 +0300 Subject: 5.6.37 --- storage/innobase/api/api0api.cc | 21 ++++- storage/innobase/handler/ha_innodb.cc | 21 +++++ storage/innobase/handler/ha_innodb.h | 6 +- storage/innobase/include/row0mysql.h | 7 +- storage/innobase/include/row0sel.h | 14 +++- storage/innobase/row/row0merge.cc | 6 +- storage/innobase/row/row0sel.cc | 153 ++++++++++++++++++++++++---------- 7 files changed, 176 insertions(+), 52 deletions(-) (limited to 'storage') diff --git a/storage/innobase/api/api0api.cc b/storage/innobase/api/api0api.cc index 07eecdc46d0..d01b221d71c 100644 --- a/storage/innobase/api/api0api.cc +++ b/storage/innobase/api/api0api.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2008, 2015, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2008, 2017, 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 @@ -1976,11 +1976,14 @@ ib_cursor_read_row( page_format = static_cast( dict_table_is_comp(tuple->index->table)); + rec = btr_pcur_get_rec(pcur); - if (prebuilt->innodb_api_rec && - prebuilt->innodb_api_rec != rec) { - rec = prebuilt->innodb_api_rec; + if (!rec_get_deleted_flag(rec, page_format)) { + if (prebuilt->innodb_api && + prebuilt->innodb_api_rec != NULL) { + rec =prebuilt->innodb_api_rec; + } } if (!rec_get_deleted_flag(rec, page_format)) { @@ -2017,6 +2020,10 @@ ib_cursor_position( buf = static_cast(mem_alloc(UNIV_PAGE_SIZE)); + if (prebuilt->innodb_api) { + prebuilt->cursor_heap = cursor->heap; + } + /* We want to position at one of the ends, row_search_for_mysql() uses the search_tuple fields to work out what to do. */ dtuple_set_n_fields(prebuilt->search_tuple, 0); @@ -2071,6 +2078,9 @@ ib_cursor_next( row_prebuilt_t* prebuilt = cursor->prebuilt; byte buf[UNIV_PAGE_SIZE_MAX]; + if (prebuilt->innodb_api) { + prebuilt->cursor_heap = cursor->heap; + } /* We want to move to the next record */ dtuple_set_n_fields(prebuilt->search_tuple, 0); @@ -2123,6 +2133,9 @@ ib_cursor_moveto( buf = static_cast(mem_alloc(UNIV_PAGE_SIZE)); + if (prebuilt->innodb_api) { + prebuilt->cursor_heap = cursor->heap; + } err = static_cast(row_search_for_mysql( buf, ib_srch_mode, prebuilt, cursor->match_mode, 0)); diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 7843c328bc8..0c02c6808ff 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -8321,6 +8321,27 @@ ha_innobase::ft_init_ext( return((FT_INFO*) fts_hdl); } +/*****************************************************************//** +Copy a cached MySQL row. +If requested, also avoids overwriting non-read columns. +@param[out] buf Row in MySQL format. +@param[in] cached_row Which row to copy. +@param[in] rec_len Record length. */ +void +ha_innobase::copy_cached_row( + uchar* buf, + const uchar* cached_row, + uint rec_len) +{ + if (prebuilt->keep_other_fields_on_keyread) { + row_sel_copy_cached_fields_for_mysql(buf, cached_row, + prebuilt); + } else { + memcpy(buf, cached_row, rec_len); + } +} + + /*****************************************************************//** Set up search tuple for a query through FTS_DOC_ID_INDEX on supplied Doc ID. This is used by MySQL to retrieve the documents diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h index 4b1cc3ed0bd..1ac6c52dce6 100644 --- a/storage/innobase/handler/ha_innodb.h +++ b/storage/innobase/handler/ha_innodb.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2000, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2000, 2017, 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 @@ -142,6 +142,10 @@ class ha_innobase: public handler int index_first(uchar * buf); int index_last(uchar * buf); + /* Copy a cached MySQL row. If requested, also avoids + overwriting non-read columns. */ + void copy_cached_row(uchar *to_rec, const uchar *from_rec, + uint rec_length); int rnd_init(bool scan); int rnd_end(); int rnd_next(uchar *buf); diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index d0c1bdaa585..c648332c0ee 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2000, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2000, 2017, 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 @@ -723,6 +723,8 @@ struct row_prebuilt_t { mem_heap_t* heap; /*!< memory heap from which these auxiliary structures are allocated when needed */ + mem_heap_t* cursor_heap; /*!< memory heap from which + innodb_api_buf is allocated per session*/ ins_node_t* ins_node; /*!< Innobase SQL insert node used to perform inserts to the table */ @@ -873,6 +875,9 @@ struct row_prebuilt_t { unsigned innodb_api:1; /*!< whether this is a InnoDB API query */ const rec_t* innodb_api_rec; /*!< InnoDB API search result */ + void* innodb_api_buf; /*!< Buffer holding copy of the physical + Innodb API search record */ + ulint innodb_api_rec_size; /*!< Size of the Innodb API record */ byte* srch_key_val1; /*!< buffer used in converting search key values from MySQL format to InnoDB format.*/ diff --git a/storage/innobase/include/row0sel.h b/storage/innobase/include/row0sel.h index fd5bc755a22..afeb216c2a2 100644 --- a/storage/innobase/include/row0sel.h +++ b/storage/innobase/include/row0sel.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1997, 2017, 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 @@ -205,6 +205,18 @@ struct sel_buf_t{ when data != NULL */ }; +/** Copy used fields from cached row. +Copy cache record field by field, don't touch fields that +are not covered by current key. +@param[out] buf Where to copy the MySQL row. +@param[in] cached_rec What to copy (in MySQL row format). +@param[in] prebuilt prebuilt struct. */ +void +row_sel_copy_cached_fields_for_mysql( + byte* buf, + const byte* cached_rec, + row_prebuilt_t* prebuilt); + /** Query plan */ struct plan_t{ dict_table_t* table; /*!< table struct in the dictionary diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 2d63352feaf..4a6fb763da6 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2005, 2017, 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 @@ -1462,6 +1462,8 @@ row_merge_read_clustered_index( row_ext_t* ext; page_cur_t* cur = btr_pcur_get_page_cur(&pcur); + mem_heap_empty(row_heap); + page_cur_move_to_next(cur); if (page_cur_is_after_last(cur)) { @@ -1885,8 +1887,6 @@ write_buffers: if (err != DB_SUCCESS) { goto func_exit; } - - mem_heap_empty(row_heap); } func_exit: diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index c53c1154f60..f321e0ba94a 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -2555,47 +2555,51 @@ row_sel_store_row_id_to_prebuilt( #ifdef UNIV_DEBUG /** Convert a non-SQL-NULL field from Innobase format to MySQL format. */ -# define row_sel_field_store_in_mysql_format(dest,templ,idx,field,src,len) \ - row_sel_field_store_in_mysql_format_func(dest,templ,idx,field,src,len) +# define row_sel_field_store_in_mysql_format(dest,templ,idx,field,src,len,sec) \ + row_sel_field_store_in_mysql_format_func(dest,templ,idx,field,src,len,sec) #else /* UNIV_DEBUG */ /** Convert a non-SQL-NULL field from Innobase format to MySQL format. */ -# define row_sel_field_store_in_mysql_format(dest,templ,idx,field,src,len) \ - row_sel_field_store_in_mysql_format_func(dest,templ,src,len) +# define row_sel_field_store_in_mysql_format(dest,templ,idx,field,src,len,sec) \ + row_sel_field_store_in_mysql_format_func(dest,templ,src,len,sec) #endif /* UNIV_DEBUG */ -/**************************************************************//** -Stores a non-SQL-NULL field in the MySQL format. The counterpart of this -function is row_mysql_store_col_in_innobase_format() in row0mysql.cc. */ +/** Stores a non-SQL-NULL field in the MySQL format. The counterpart of this +function is row_mysql_store_col_in_innobase_format() in row0mysql.cc. +@param[in,out] dest buffer where to store; NOTE + that BLOBs are not in themselves stored + here: the caller must allocate and copy + the BLOB into buffer before, and pass + the pointer to the BLOB in 'data' +@param[in] templ MySQL column template. Its following fields + are referenced: type, is_unsigned, mysql_col_len, + mbminlen, mbmaxlen +@param[in] index InnoDB index +@param[in] field_no templ->rec_field_no or templ->clust_rec_field_no + or templ->icp_rec_field_no +@param[in] data data to store +@param[in] len length of the data +@param[in] sec_field secondary index field no if the secondary index + record but the prebuilt template is in + clustered index format and used only for end + range comparison. */ static MY_ATTRIBUTE((nonnull)) void row_sel_field_store_in_mysql_format_func( -/*=====================================*/ - byte* dest, /*!< in/out: buffer where to store; NOTE - that BLOBs are not in themselves - stored here: the caller must allocate - and copy the BLOB into buffer before, - and pass the pointer to the BLOB in - 'data' */ + byte* dest, const mysql_row_templ_t* templ, - /*!< in: MySQL column template. - Its following fields are referenced: - type, is_unsigned, mysql_col_len, - mbminlen, mbmaxlen */ #ifdef UNIV_DEBUG const dict_index_t* index, - /*!< in: InnoDB index */ ulint field_no, - /*!< in: templ->rec_field_no or - templ->clust_rec_field_no or - templ->icp_rec_field_no */ #endif /* UNIV_DEBUG */ - const byte* data, /*!< in: data to store */ - ulint len) /*!< in: length of the data */ + const byte* data, + ulint len, + ulint sec_field) { byte* ptr; #ifdef UNIV_DEBUG const dict_field_t* field = dict_index_get_nth_field(index, field_no); + bool clust_templ_for_sec = (sec_field != ULINT_UNDEFINED); #endif /* UNIV_DEBUG */ ut_ad(len != UNIV_SQL_NULL); @@ -2709,7 +2713,8 @@ row_sel_field_store_in_mysql_format_func( containing UTF-8 ENUM columns due to Bug #9526. */ ut_ad(!templ->mbmaxlen || !(templ->mysql_col_len % templ->mbmaxlen)); - ut_ad(len * templ->mbmaxlen >= templ->mysql_col_len + ut_ad(clust_templ_for_sec + || len * templ->mbmaxlen >= templ->mysql_col_len || (field_no == templ->icp_rec_field_no && field->prefix_len > 0)); ut_ad(!(field->prefix_len % templ->mbmaxlen)); @@ -2737,21 +2742,26 @@ row_sel_field_store_in_mysql_format_func( case DATA_DECIMAL: /* Above are the valid column types for MySQL data. */ #endif /* UNIV_DEBUG */ + /* If sec_field value is present then mapping of + secondary index records to clustered index template + happens for end range comparison. So length can + vary according to secondary index record length. */ ut_ad(field->prefix_len ? field->prefix_len == len - : templ->mysql_col_len == len); + : (clust_templ_for_sec ? + 1 : (templ->mysql_col_len == len))); memcpy(dest, data, len); } } #ifdef UNIV_DEBUG /** Convert a field from Innobase format to MySQL format. */ -# define row_sel_store_mysql_field(m,p,r,i,o,f,t,c) \ - row_sel_store_mysql_field_func(m,p,r,i,o,f,t,c) +# define row_sel_store_mysql_field(m,p,r,i,o,f,t,s) \ + row_sel_store_mysql_field_func(m,p,r,i,o,f,t,s) #else /* UNIV_DEBUG */ /** Convert a field from Innobase format to MySQL format. */ -# define row_sel_store_mysql_field(m,p,r,i,o,f,t,c) \ - row_sel_store_mysql_field_func(m,p,r,o,f,t,c) +# define row_sel_store_mysql_field(m,p,r,i,o,f,t,s) \ + row_sel_store_mysql_field_func(m,p,r,o,f,t,s) #endif /* UNIV_DEBUG */ /** Convert a field in the Innobase format to a field in the MySQL format. @param[out] mysql_rec record in the MySQL format @@ -2766,7 +2776,7 @@ row_sel_field_store_in_mysql_format_func( or sec field no if clust_templ_for_sec is TRUE @param[in] templ row template -@param[in] clust_templ_for_sec TRUE if rec belongs to secondary index +@param[in] sec_field_no field_no if rec belongs to secondary index but prebuilt template is in clustered index format and used only for end range comparison. */ @@ -2782,10 +2792,12 @@ row_sel_store_mysql_field_func( const ulint* offsets, ulint field_no, const mysql_row_templ_t*templ, - bool clust_templ_for_sec) + ulint sec_field_no) { const byte* data; ulint len; + ulint clust_field_no; + bool clust_templ_for_sec = (sec_field_no != ULINT_UNDEFINED); ut_ad(prebuilt->default_rec); ut_ad(templ); @@ -2796,7 +2808,14 @@ row_sel_store_mysql_field_func( || field_no == templ->rec_field_no || field_no == templ->icp_rec_field_no); ut_ad(rec_offs_validate(rec, - clust_templ_for_sec == true ? prebuilt->index : index, offsets)); + clust_templ_for_sec ? prebuilt->index : index, offsets)); + + /* If sec_field_no is present then extract the data from record + using secondary field no. */ + if (clust_templ_for_sec) { + clust_field_no = field_no; + field_no = sec_field_no; + } if (UNIV_UNLIKELY(rec_offs_nth_extern(offsets, field_no))) { @@ -2845,7 +2864,8 @@ row_sel_store_mysql_field_func( row_sel_field_store_in_mysql_format( mysql_rec + templ->mysql_col_offset, - templ, index, field_no, data, len); + templ, index, field_no, data, len, + ULINT_UNDEFINED); if (heap != prebuilt->blob_heap) { mem_heap_free(heap); @@ -2893,9 +2913,14 @@ row_sel_store_mysql_field_func( mem_heap_dup(prebuilt->blob_heap, data, len)); } + /* Reassign the clustered index field no. */ + if (clust_templ_for_sec) { + field_no = clust_field_no; + } + row_sel_field_store_in_mysql_format( mysql_rec + templ->mysql_col_offset, - templ, index, field_no, data, len); + templ, index, field_no, data, len, sec_field_no); } ut_ad(len != UNIV_SQL_NULL); @@ -2967,6 +2992,8 @@ row_sel_store_mysql_rec( = rec_clust ? templ->clust_rec_field_no : templ->rec_field_no; + ulint sec_field_no = ULINT_UNDEFINED; + /* We should never deliver column prefixes to MySQL, except for evaluating innobase_index_cond(). */ ut_ad(dict_index_get_nth_field(index, field_no)->prefix_len @@ -2983,13 +3010,13 @@ row_sel_store_mysql_rec( ut_ad(templ->rec_field_no == templ->clust_rec_field_no); - field_no = it - template_col.begin(); + sec_field_no = it - template_col.begin(); } if (!row_sel_store_mysql_field(mysql_rec, prebuilt, rec, index, offsets, field_no, templ, - clust_templ_for_sec)) { + sec_field_no)) { return(FALSE); } } @@ -2999,7 +3026,8 @@ row_sel_store_mysql_rec( NOTE, the record must be cluster index record. Secondary index might not have the Doc ID */ if (dict_table_has_fts_index(prebuilt->table) - && dict_index_is_clust(index)) { + && dict_index_is_clust(index) + && !clust_templ_for_sec) { prebuilt->fts_doc_id = fts_get_doc_id_from_rec( prebuilt->table, rec, NULL); @@ -3370,6 +3398,36 @@ row_sel_copy_cached_field_for_mysql( ut_memcpy(buf, cache, len); } +/** Copy used fields from cached row. +Copy cache record field by field, don't touch fields that +are not covered by current key. +@param[out] buf Where to copy the MySQL row. +@param[in] cached_rec What to copy (in MySQL row format). +@param[in] prebuilt prebuilt struct. */ +void +row_sel_copy_cached_fields_for_mysql( + byte* buf, + const byte* cached_rec, + row_prebuilt_t* prebuilt) +{ + const mysql_row_templ_t*templ; + ulint i; + for (i = 0; i < prebuilt->n_template; i++) { + templ = prebuilt->mysql_template + i; + + row_sel_copy_cached_field_for_mysql( + buf, cached_rec, templ); + /* Copy NULL bit of the current field from cached_rec + to buf */ + if (templ->mysql_null_bit_mask) { + buf[templ->mysql_null_byte_offset] + ^= (buf[templ->mysql_null_byte_offset] + ^ cached_rec[templ->mysql_null_byte_offset]) + & (byte) templ->mysql_null_bit_mask; + } + } +} + /********************************************************************//** Pops a cached row for MySQL from the fetch cache. */ UNIV_INLINE @@ -3629,7 +3687,7 @@ row_search_idx_cond_check( if (!row_sel_store_mysql_field(mysql_rec, prebuilt, rec, prebuilt->index, offsets, templ->icp_rec_field_no, - templ, false)) { + templ, ULINT_UNDEFINED)) { return(ICP_NO_MATCH); } } @@ -5086,8 +5144,19 @@ idx_cond_failed: btr_pcur_store_position(pcur, &mtr); - if (prebuilt->innodb_api) { - prebuilt->innodb_api_rec = result_rec; + if (prebuilt->innodb_api + && (btr_pcur_get_rec(pcur) != result_rec)) { + ulint rec_size = rec_offs_size(offsets); + if (!prebuilt->innodb_api_rec_size || + (prebuilt->innodb_api_rec_size < rec_size)) { + prebuilt->innodb_api_buf = + static_cast + (mem_heap_alloc(prebuilt->cursor_heap,rec_size)); + prebuilt->innodb_api_rec_size = rec_size; + } + prebuilt->innodb_api_rec = + rec_copy( + prebuilt->innodb_api_buf, result_rec, offsets); } } -- cgit v1.2.1 From 900e3218cfe34cd2a8b730afecce2371c3bf9963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Sun, 30 Jul 2017 11:35:48 +0300 Subject: Bump innodb version post merge --- storage/innobase/include/univ.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'storage') diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index 15147f87115..3196df061a1 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -45,7 +45,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 5 #define INNODB_VERSION_MINOR 6 -#define INNODB_VERSION_BUGFIX 36 +#define INNODB_VERSION_BUGFIX 37 /* The following is the InnoDB version as shown in SELECT plugin_version FROM information_schema.plugins; -- cgit v1.2.1 From 31f4df450502d96854c052ce3cd2858ce9dbf900 Mon Sep 17 00:00:00 2001 From: Elena Stepanova Date: Mon, 31 Jul 2017 20:34:22 +0300 Subject: MDEV-12915 ST_Centroid does not return the same result than MySQL Fix storage_engine test results --- .../innobase/mysql-test/storage_engine/type_spatial_indexes.rdiff | 4 ++-- storage/myisammrg/mysql-test/storage_engine/type_spatial.rdiff | 4 ++-- .../mysql-test/storage_engine/type_spatial_indexes.rdiff | 8 ++++---- .../xtradb/mysql-test/storage_engine/type_spatial_indexes.rdiff | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) (limited to 'storage') diff --git a/storage/innobase/mysql-test/storage_engine/type_spatial_indexes.rdiff b/storage/innobase/mysql-test/storage_engine/type_spatial_indexes.rdiff index d3fb59e6ce3..111fb0033bd 100644 --- a/storage/innobase/mysql-test/storage_engine/type_spatial_indexes.rdiff +++ b/storage/innobase/mysql-test/storage_engine/type_spatial_indexes.rdiff @@ -352,8 +352,8 @@ -116 0 -SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon; -fid AsText(Centroid(g)) --117 POINT(55.58852775304245 17.426536064113982) --118 POINT(55.58852775304245 17.426536064113982) +-117 POINT(57.98031067576927 17.854754130800433) +-118 POINT(57.98031067576927 17.854754130800433) -119 POINT(2 2) -SELECT fid, Area(g) FROM gis_multi_polygon; -fid Area(g) diff --git a/storage/myisammrg/mysql-test/storage_engine/type_spatial.rdiff b/storage/myisammrg/mysql-test/storage_engine/type_spatial.rdiff index 52e9d9fdbe4..70675d241b9 100644 --- a/storage/myisammrg/mysql-test/storage_engine/type_spatial.rdiff +++ b/storage/myisammrg/mysql-test/storage_engine/type_spatial.rdiff @@ -352,8 +352,8 @@ -116 0 -SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon; -fid AsText(Centroid(g)) --117 POINT(55.58852775304245 17.426536064113982) --118 POINT(55.58852775304245 17.426536064113982) +-117 POINT(57.98031067576927 17.854754130800433) +-118 POINT(57.98031067576927 17.854754130800433) -119 POINT(2 2) -SELECT fid, Area(g) FROM gis_multi_polygon; -fid Area(g) diff --git a/storage/myisammrg/mysql-test/storage_engine/type_spatial_indexes.rdiff b/storage/myisammrg/mysql-test/storage_engine/type_spatial_indexes.rdiff index ecd0025c9d9..b14bd251f58 100644 --- a/storage/myisammrg/mysql-test/storage_engine/type_spatial_indexes.rdiff +++ b/storage/myisammrg/mysql-test/storage_engine/type_spatial_indexes.rdiff @@ -352,8 +352,8 @@ -116 0 -SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon; -fid AsText(Centroid(g)) --117 POINT(55.58852775304245 17.426536064113982) --118 POINT(55.58852775304245 17.426536064113982) +-117 POINT(57.98031067576927 17.854754130800433) +-118 POINT(57.98031067576927 17.854754130800433) -119 POINT(2 2) -SELECT fid, Area(g) FROM gis_multi_polygon; -fid Area(g) @@ -1062,8 +1062,8 @@ -116 0 -SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon; -fid AsText(Centroid(g)) --117 POINT(55.58852775304245 17.426536064113982) --118 POINT(55.58852775304245 17.426536064113982) +-117 POINT(57.98031067576927 17.854754130800433) +-118 POINT(57.98031067576927 17.854754130800433) -119 POINT(2 2) -SELECT fid, Area(g) FROM gis_multi_polygon; -fid Area(g) diff --git a/storage/xtradb/mysql-test/storage_engine/type_spatial_indexes.rdiff b/storage/xtradb/mysql-test/storage_engine/type_spatial_indexes.rdiff index d3fb59e6ce3..111fb0033bd 100644 --- a/storage/xtradb/mysql-test/storage_engine/type_spatial_indexes.rdiff +++ b/storage/xtradb/mysql-test/storage_engine/type_spatial_indexes.rdiff @@ -352,8 +352,8 @@ -116 0 -SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon; -fid AsText(Centroid(g)) --117 POINT(55.58852775304245 17.426536064113982) --118 POINT(55.58852775304245 17.426536064113982) +-117 POINT(57.98031067576927 17.854754130800433) +-118 POINT(57.98031067576927 17.854754130800433) -119 POINT(2 2) -SELECT fid, Area(g) FROM gis_multi_polygon; -fid Area(g) -- cgit v1.2.1 From 60c9485a8e5ebf410d9fa60caa7937f3fe3ca9b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Tue, 1 Aug 2017 11:39:10 +0300 Subject: Merge connect/10.0 into 10.0 Squash all connect/10.0's commits into one and keep only changes from storage/connect directory. --- storage/connect/array.cpp | 12 +- storage/connect/blkfil.cpp | 10 +- storage/connect/colblk.cpp | 10 +- storage/connect/connect.cc | 11 +- storage/connect/connect.h | 3 +- storage/connect/engmsg.h | 1 + storage/connect/filter.cpp | 14 +- storage/connect/global.h | 4 +- storage/connect/ha_connect.cc | 168 ++++++++++++------- storage/connect/ha_connect.h | 3 +- storage/connect/jdbconn.cpp | 143 ++++++++++------- storage/connect/json.cpp | 139 ++++++++++++++-- storage/connect/json.h | 36 +++-- storage/connect/jsonudf.cpp | 61 +++---- storage/connect/msgid.h | 1 + storage/connect/mycat.cc | 2 +- storage/connect/mycat.h | 4 +- .../mysql-test/connect/r/drop-open-error.result | 14 ++ storage/connect/mysql-test/connect/r/grant2.result | 3 +- .../mysql-test/connect/r/infoschema-9739.result | 12 ++ .../connect/mysql-test/connect/r/json_udf.result | 2 +- .../connect/mysql-test/connect/r/mysql_new.result | 2 +- .../mysql-test/connect/r/odbc_firebird.result | 165 +++++++++++++++++++ .../mysql-test/connect/std_data/mdev9949.frm | Bin 0 -> 35031 bytes .../mysql-test/connect/t/drop-open-error.opt | 1 + .../mysql-test/connect/t/drop-open-error.test | 31 ++++ storage/connect/mysql-test/connect/t/grant2.test | 1 + .../mysql-test/connect/t/infoschema-9739.test | 9 ++ .../connect/mysql-test/connect/t/mysql_new.test | 2 +- .../mysql-test/connect/t/odbc_firebird.test | 35 ++++ .../mysql-test/connect/t/secure_file_priv.test | 2 +- storage/connect/noconst.c | 38 +++++ storage/connect/os.h | 1 + storage/connect/osutil.c | 1 + storage/connect/osutil.h | 1 + storage/connect/plgdbsem.h | 2 - storage/connect/plgdbutl.cpp | 22 +-- storage/connect/plugutil.cpp | 102 ++++++------ storage/connect/tabcol.cpp | 8 +- storage/connect/tabdos.cpp | 178 +++++++++++---------- storage/connect/tabjson.cpp | 32 ++-- storage/connect/table.cpp | 2 +- storage/connect/tabodbc.cpp | 4 +- storage/connect/tabodbc.h | 2 +- storage/connect/tabvir.cpp | 2 +- storage/connect/tabxml.cpp | 40 ++--- storage/connect/user_connect.cc | 37 +++-- storage/connect/user_connect.h | 5 +- storage/connect/value.cpp | 71 ++++---- storage/connect/value.h | 4 +- storage/connect/xindex.cpp | 20 +-- storage/connect/xobject.cpp | 10 +- 52 files changed, 1001 insertions(+), 482 deletions(-) create mode 100644 storage/connect/mysql-test/connect/r/drop-open-error.result create mode 100644 storage/connect/mysql-test/connect/r/infoschema-9739.result create mode 100644 storage/connect/mysql-test/connect/r/odbc_firebird.result create mode 100644 storage/connect/mysql-test/connect/std_data/mdev9949.frm create mode 100644 storage/connect/mysql-test/connect/t/drop-open-error.opt create mode 100644 storage/connect/mysql-test/connect/t/drop-open-error.test create mode 100644 storage/connect/mysql-test/connect/t/infoschema-9739.test create mode 100644 storage/connect/mysql-test/connect/t/odbc_firebird.test create mode 100644 storage/connect/noconst.c (limited to 'storage') diff --git a/storage/connect/array.cpp b/storage/connect/array.cpp index 6e0da312ca3..4868925f3c2 100644 --- a/storage/connect/array.cpp +++ b/storage/connect/array.cpp @@ -520,7 +520,7 @@ bool ARRAY::FilTest(PGLOBAL g, PVAL valp, OPVAL opc, int opm) } else if (opc != OP_EXIST) { sprintf(g->Message, MSG(MISSING_ARG), opc); - throw TYPE_ARRAY; + throw (int)TYPE_ARRAY; } else // OP_EXIST return Nval > 0; @@ -683,14 +683,14 @@ void ARRAY::SetPrecision(PGLOBAL g, int p) { if (Vblp == NULL) { strcpy(g->Message, MSG(PREC_VBLP_NULL)); - throw TYPE_ARRAY; + throw (int)TYPE_ARRAY; } // endif Vblp bool was = Vblp->IsCi(); if (was && !p) { strcpy(g->Message, MSG(BAD_SET_CASE)); - throw TYPE_ARRAY; + throw (int)TYPE_ARRAY; } // endif Vblp if (was || !p) @@ -701,7 +701,7 @@ void ARRAY::SetPrecision(PGLOBAL g, int p) if (!was && Type == TYPE_STRING) // Must be resorted to eliminate duplicate strings if (Sort(g)) - throw TYPE_ARRAY; + throw (int)TYPE_ARRAY; } // end of SetPrecision @@ -1035,7 +1035,7 @@ void ARRAY::Printf(PGLOBAL g, FILE *f, uint n) } else fprintf(f, "%sVALLST: numval=%d\n", m, Nval); - } // end of Print + } // end of Printf /***********************************************************************/ /* Make string output of ARRAY contents. */ @@ -1047,7 +1047,7 @@ void ARRAY::Prints(PGLOBAL, char *ps, uint z) sprintf(ps, "ARRAY: type=%d\n", Type); // More to be implemented later - } // end of Print + } // end of Prints /* -------------------------- Class MULAR ---------------------------- */ diff --git a/storage/connect/blkfil.cpp b/storage/connect/blkfil.cpp index 77a46260934..802095f2f82 100644 --- a/storage/connect/blkfil.cpp +++ b/storage/connect/blkfil.cpp @@ -65,7 +65,7 @@ void BLOCKFILTER::Printf(PGLOBAL, FILE *f, uint n) fprintf(f, "%sBLOCKFILTER: at %p opc=%d opm=%d result=%d\n", m, this, Opc, Opm, Result); - } // end of Print + } // end of Printf /***********************************************************************/ /* Make string output of BLOCKFILTER contents. */ @@ -73,7 +73,7 @@ void BLOCKFILTER::Printf(PGLOBAL, FILE *f, uint n) void BLOCKFILTER::Prints(PGLOBAL, char *ps, uint z) { strncat(ps, "BlockFilter(s)", z); - } // end of Print + } // end of Prints /* ---------------------- Class BLKFILLOG ---------------------------- */ @@ -1006,9 +1006,9 @@ void BLOCKINDEX::Printf(PGLOBAL g, FILE *f, UINT n) m, this, Next, (Colp) ? Colp->GetName() : "Rowid", Kxp, Result); if (Next) - Next->Print(g, f, n); + Next->Printf(g, f, n); - } // end of Print + } // end of Printf /***********************************************************************/ /* Make string output of BLOCKINDEX contents. */ @@ -1016,7 +1016,7 @@ void BLOCKINDEX::Printf(PGLOBAL g, FILE *f, UINT n) void BLOCKINDEX::Prints(PGLOBAL g, char *ps, UINT z) { strncat(ps, "BlockIndex(es)", z); - } // end of Print + } // end of Prints /* ------------------------------------------------------------------- */ diff --git a/storage/connect/colblk.cpp b/storage/connect/colblk.cpp index 324d59ab40e..2ffe51d2009 100644 --- a/storage/connect/colblk.cpp +++ b/storage/connect/colblk.cpp @@ -197,7 +197,7 @@ int COLBLK::GetLengthEx(void) void COLBLK::ReadColumn(PGLOBAL g) { sprintf(g->Message, MSG(UNDEFINED_AM), "ReadColumn"); - throw TYPE_COLBLK; + throw (int)TYPE_COLBLK; } // end of ReadColumn /***********************************************************************/ @@ -208,7 +208,7 @@ void COLBLK::ReadColumn(PGLOBAL g) void COLBLK::WriteColumn(PGLOBAL g) { sprintf(g->Message, MSG(UNDEFINED_AM), "WriteColumn"); - throw TYPE_COLBLK; + throw (int)TYPE_COLBLK; } // end of WriteColumn /***********************************************************************/ @@ -232,7 +232,7 @@ void COLBLK::Printf(PGLOBAL, FILE *f, uint n) fprintf(f, " coluse=%04X status=%04X buftyp=%d value=%p name=%s\n", ColUse, Status, Buf_Type, Value, Name); - } // end of Print + } // end of Printf /***********************************************************************/ /* Make string output of a column descriptor block. */ @@ -240,7 +240,7 @@ void COLBLK::Printf(PGLOBAL, FILE *f, uint n) void COLBLK::Prints(PGLOBAL, char *ps, uint) { sprintf(ps, "R%d.%s", To_Tdb->GetTdb_No(), Name); - } // end of Print + } // end of Prints /***********************************************************************/ @@ -262,7 +262,7 @@ SPCBLK::SPCBLK(PCOLUMN cp) void SPCBLK::WriteColumn(PGLOBAL g) { sprintf(g->Message, MSG(SPCOL_READONLY), Name); - throw TYPE_COLBLK; + throw (int)TYPE_COLBLK; } // end of WriteColumn /***********************************************************************/ diff --git a/storage/connect/connect.cc b/storage/connect/connect.cc index e15cc724b85..c5a29fe7416 100644 --- a/storage/connect/connect.cc +++ b/storage/connect/connect.cc @@ -1,4 +1,5 @@ /* Copyright (C) Olivier Bertrand 2004 - 2017 + Copyright (C) MariaDB Corporation 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 @@ -66,8 +67,10 @@ PGLOBAL CntExit(PGLOBAL g) if (g) { CntEndDB(g); - if (g->Activityp) - delete g->Activityp; + if (g->Activityp) { + delete g->Activityp; + g->Activityp = NULL; + } // endif Activityp PlugExit(g); g= NULL; @@ -185,10 +188,10 @@ bool CntInfo(PGLOBAL g, PTDB tp, PXF info) /***********************************************************************/ PTDB CntGetTDB(PGLOBAL g, LPCSTR name, MODE mode, PHC h) { - PTDB tdbp; + PTDB tdbp = NULL; PTABLE tabp; PDBUSER dup = PlgGetUser(g); - volatile PCATLG cat = (dup) ? dup->Catalog : NULL; // Safe over longjmp + volatile PCATLG cat = (dup) ? dup->Catalog : NULL; // Safe over throw if (trace) printf("CntGetTDB: name=%s mode=%d cat=%p\n", name, mode, cat); diff --git a/storage/connect/connect.h b/storage/connect/connect.h index 128561b80f3..2bca8bf54cb 100644 --- a/storage/connect/connect.h +++ b/storage/connect/connect.h @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2011 +/* Copyright (C) MariaDB Corporation 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 @@ -15,6 +15,7 @@ /**************** Cnt H Declares Source Code File (.H) *****************/ /* Name: CONNECT.H Version 2.4 */ +/* Author Olivier BERTRAND bertrandop@gmail.com */ /* This file contains the some based classes declares. */ /***********************************************************************/ #include "filamtxt.h" diff --git a/storage/connect/engmsg.h b/storage/connect/engmsg.h index 14808758efd..c072511065e 100644 --- a/storage/connect/engmsg.h +++ b/storage/connect/engmsg.h @@ -1,3 +1,4 @@ +/* Copyright (C) MariaDB Corporation Ab */ #define MSG_ACCESS_VIOLATN "Access violation" #define MSG_ADD_BAD_TYPE "Array add value type mismatch (%s -> %s)" #define MSG_ALLOC_ERROR "Error allocating %s" diff --git a/storage/connect/filter.cpp b/storage/connect/filter.cpp index da44b129ccb..d592dc27cf3 100644 --- a/storage/connect/filter.cpp +++ b/storage/connect/filter.cpp @@ -87,7 +87,7 @@ BYTE OpBmp(PGLOBAL g, OPVAL opc) case OP_EXIST: bt = 0x00; break; default: sprintf(g->Message, MSG(BAD_FILTER_OP), opc); - throw TYPE_ARRAY; + throw (int)TYPE_FILTER; } // endswitch opc return bt; @@ -1437,7 +1437,7 @@ void FILTER::Printf(PGLOBAL g, FILE *f, uint n) } // endfor fp - } // end of Print + } // end of Printf /***********************************************************************/ /* Make string output of TABLE contents (z should be checked). */ @@ -1579,7 +1579,7 @@ void FILTER::Prints(PGLOBAL g, char *ps, uint z) bcp = bxp; } while (bcp); // enddo - } // end of Print + } // end of Prints /* -------------------- Derived Classes Functions -------------------- */ @@ -1697,8 +1697,6 @@ PFIL PrepareFilter(PGLOBAL g, PFIL fp, bool having) if (trace) htrc("PrepareFilter: fp=%p having=%d\n", fp, having); -//if (fp) -// fp->Print(g, debug, 0); while (fp) { if (fp->Opc == OP_SEP) @@ -1712,7 +1710,7 @@ PFIL PrepareFilter(PGLOBAL g, PFIL fp, bool having) break; // Remove eventual ending separator(s) // if (fp->Convert(g, having)) -// throw TYPE_ARRAY; +// throw (int)TYPE_FILTER; filp = fp; fp = fp->Next; @@ -1721,8 +1719,6 @@ PFIL PrepareFilter(PGLOBAL g, PFIL fp, bool having) if (trace) htrc(" returning filp=%p\n", filp); -//if (filp) -// filp->Print(g, debug, 0); return filp; } // end of PrepareFilter @@ -1745,7 +1741,7 @@ DllExport bool ApplyFilter(PGLOBAL g, PFIL filp) // return TRUE; if (filp->Eval(g)) - throw TYPE_FILTER; + throw (int)TYPE_FILTER; if (trace > 1) htrc("PlugFilter filp=%p result=%d\n", diff --git a/storage/connect/global.h b/storage/connect/global.h index a2030fdb5d0..cb756494efc 100644 --- a/storage/connect/global.h +++ b/storage/connect/global.h @@ -1,6 +1,7 @@ /***********************************************************************/ /* GLOBAL.H: Declaration file used by all CONNECT implementations. */ -/* (C) Copyright Olivier Bertrand 1993-2017 */ +/* (C) Copyright MariaDB Corporation Ab */ +/* Author Olivier Bertrand 1993-2017 */ /***********************************************************************/ /***********************************************************************/ @@ -90,6 +91,7 @@ #define TYPE_BIGINT 5 #define TYPE_LIST 6 #define TYPE_INT 7 +#define TYPE_DATE 8 #define TYPE_DECIM 9 #define TYPE_BIN 10 #define TYPE_PCHAR 11 diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index 89dc1502656..d6e37700e4f 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2017 +/* Copyright (C) MariaDB Corporation 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 @@ -98,9 +98,8 @@ rnd_next signals that it has reached the end of its data. Calls to ha_connect::extra() are hints as to what will be occuring to the request. - Happy use!
- -Olivier -*/ + Author Olivier Bertrand + */ #ifdef USE_PRAGMA_IMPLEMENTATION #pragma implementation // gcc: Class implementation @@ -198,11 +197,13 @@ extern "C" { char *ClassPath; #endif // JDBC_SUPPORT -#if defined(__WIN__) -CRITICAL_SECTION parsec; // Used calling the Flex parser -#else // !__WIN__ -pthread_mutex_t parmut = PTHREAD_MUTEX_INITIALIZER; -#endif // !__WIN__ +//#if defined(__WIN__) +//CRITICAL_SECTION parsec; // Used calling the Flex parser +//#else // !__WIN__ +//pthread_mutex_t parmut = PTHREAD_MUTEX_INITIALIZER; +//#endif // !__WIN__ +pthread_mutex_t parmut; +pthread_mutex_t usrmut; /***********************************************************************/ /* Utility functions. */ @@ -221,6 +222,7 @@ void mongo_init(bool); USETEMP UseTemp(void); int GetConvSize(void); TYPCONV GetTypeConv(void); +char *GetJsonNull(void); uint GetJsonGrpSize(void); char *GetJavaWrapper(void); uint GetWorkSize(void); @@ -330,6 +332,13 @@ static MYSQL_THDVAR_ENUM( 0, // def (no) &xconv_typelib); // typelib +// Null representation for JSON values +static MYSQL_THDVAR_STR(json_null, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, + "Representation of Json null values", + // check_json_null, update_json_null, + NULL, NULL, ""); + // Estimate max number of rows for JSON aggregate functions static MYSQL_THDVAR_UINT(json_grp_size, PLUGIN_VAR_RQCMDARG, // opt @@ -381,6 +390,8 @@ bool ExactInfo(void) {return THDVAR(current_thd, exact_info);} USETEMP UseTemp(void) {return (USETEMP)THDVAR(current_thd, use_tempfile);} int GetConvSize(void) {return THDVAR(current_thd, conv_size);} TYPCONV GetTypeConv(void) {return (TYPCONV)THDVAR(current_thd, type_conv);} +char *GetJsonNull(void) + {return connect_hton ? THDVAR(current_thd, json_null) : NULL;} uint GetJsonGrpSize(void) {return connect_hton ? THDVAR(current_thd, json_grp_size) : 10;} uint GetWorkSize(void) {return THDVAR(current_thd, work_size);} @@ -666,10 +677,12 @@ static int connect_init_func(void *p) #if defined(__WIN__) sql_print_information("CONNECT: %s", compver); - InitializeCriticalSection((LPCRITICAL_SECTION)&parsec); +//InitializeCriticalSection((LPCRITICAL_SECTION)&parsec); #else // !__WIN__ sql_print_information("CONNECT: %s", version); #endif // !__WIN__ + pthread_mutex_init(&parmut, NULL); + pthread_mutex_init(&usrmut, NULL); #if defined(LIBXML2_SUPPORT) XmlInitParserLib(); @@ -718,12 +731,13 @@ static int connect_done_func(void *) #endif // JDBC_SUPPORT #if defined(__WIN__) - DeleteCriticalSection((LPCRITICAL_SECTION)&parsec); +//DeleteCriticalSection((LPCRITICAL_SECTION)&parsec); #else // !__WIN__ PROFILE_End(); #endif // !__WIN__ - for (pc= user_connect::to_users; pc; pc= pn) { + pthread_mutex_lock(&usrmut); + for (pc= user_connect::to_users; pc; pc= pn) { if (pc->g) PlugCleanup(pc->g, true); @@ -731,6 +745,10 @@ static int connect_done_func(void *) delete pc; } // endfor pc + pthread_mutex_unlock(&usrmut); + + pthread_mutex_destroy(&usrmut); + pthread_mutex_destroy(&parmut); connect_hton= NULL; DBUG_RETURN(error); } // end of connect_done_func @@ -843,6 +861,7 @@ ha_connect::~ha_connect(void) static void PopUser(PCONNECT xp) { if (xp) { + pthread_mutex_lock(&usrmut); xp->count--; if (!xp->count) { @@ -867,6 +886,7 @@ static void PopUser(PCONNECT xp) delete xp; } // endif count + pthread_mutex_unlock(&usrmut); } // endif xp } // end of PopUser @@ -880,23 +900,33 @@ static PCONNECT GetUser(THD *thd, PCONNECT xp) if (!thd) return NULL; - if (xp && thd == xp->thdp) - return xp; + if (xp) { + if (thd == xp->thdp) + return xp; - for (xp= user_connect::to_users; xp; xp= xp->next) + PopUser(xp); // Avoid memory leak + } // endif xp + + pthread_mutex_lock(&usrmut); + + for (xp= user_connect::to_users; xp; xp= xp->next) if (thd == xp->thdp) break; - if (!xp) { + if (xp) + xp->count++; + + pthread_mutex_unlock(&usrmut); + + if (!xp) { xp= new user_connect(thd); if (xp->user_init()) { delete xp; xp= NULL; - } // endif user_init + } // endif user_init - } else - xp->count++; + } // endif xp return xp; } // end of GetUser @@ -1024,37 +1054,55 @@ PCSZ GetListOption(PGLOBAL g, PCSZ opname, PCSZ oplist, PCSZ def) if (!oplist) return (char*)def; - char key[16], val[256]; - char *pk, *pv, *pn; - PCSZ opval= def; - int n; - - for (pk= (char*)oplist; pk; pk= ++pn) { - pn= strchr(pk, ','); - pv= strchr(pk, '='); - - if (pv && (!pn || pv < pn)) { - n= MY_MIN(pv - pk, (int)sizeof(key) - 1); - memcpy(key, pk, n); - key[n]= 0; - pv++; - n= MY_MIN((pn ? pn - pv : strlen(pv)), sizeof(val) - 1); - memcpy(val, pv, n); - val[n]= 0; - } else { - n= MY_MIN((pn ? pn - pk : strlen(pk)), sizeof(key) - 1); - memcpy(key, pk, n); - key[n]= 0; - val[0]= 0; - } // endif pv - - if (!stricmp(opname, key)) { - opval= PlugDup(g, val); - break; - } else if (!pn) - break; + char key[16], val[256]; + char *pv, *pn, *pk = (char*)oplist; + PCSZ opval = def; + int n; - } // endfor pk + while (*pk == ' ') + pk++; + + for (; pk; pk = pn) { + pn = strchr(pk, ','); + pv = strchr(pk, '='); + + if (pv && (!pn || pv < pn)) { + n = MY_MIN(static_cast(pv - pk), sizeof(key) - 1); + memcpy(key, pk, n); + + while (n && key[n - 1] == ' ') + n--; + + key[n] = 0; + + while (*(++pv) == ' '); + + n = MY_MIN((pn ? pn - pv : strlen(pv)), sizeof(val) - 1); + memcpy(val, pv, n); + + while (n && val[n - 1] == ' ') + n--; + + val[n] = 0; + } else { + n = MY_MIN((pn ? pn - pk : strlen(pk)), sizeof(key) - 1); + memcpy(key, pk, n); + + while (n && key[n - 1] == ' ') + n--; + + key[n] = 0; + val[0] = 0; + } // endif pv + + if (!stricmp(opname, key)) { + opval = PlugDup(g, val); + break; + } else if (!pn) + break; + + while (*(++pn) == ' '); + } // endfor pk return opval; } // end of GetListOption @@ -1427,7 +1475,7 @@ void *ha_connect::GetColumnOption(PGLOBAL g, void *field, PCOLINFO pcf) case MYSQL_TYPE_VARCHAR: case MYSQL_TYPE_VAR_STRING: pcf->Flags |= U_VAR; - /* fall through */ + // fall through default: pcf->Type= MYSQLtoPLG(fp->type(), &v); break; @@ -2802,7 +2850,7 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond) case Item_func::LIKE_FUNC: vop= OP_LIKE; break; case Item_func::ISNOTNULL_FUNC: neg = true; - /* fall through */ + // fall through case Item_func::ISNULL_FUNC: vop= OP_NULL; break; case Item_func::IN_FUNC: vop= OP_IN; case Item_func::BETWEEN: @@ -4052,7 +4100,12 @@ int ha_connect::info(uint flag) DBUG_ENTER("ha_connect::info"); - if (trace) + if (!g) { + my_message(ER_UNKNOWN_ERROR, "Cannot get g pointer", MYF(0)); + DBUG_RETURN(HA_ERR_INTERNAL_ERROR); + } // endif g + + if (trace) htrc("%p In info: flag=%u valid_info=%d\n", this, flag, valid_info); // tdbp must be available to get updated info @@ -4063,7 +4116,7 @@ int ha_connect::info(uint flag) if (xmod == MODE_ANY || xmod == MODE_ALTER) { // Pure info, not a query pure= true; - xp->CheckCleanup(); + xp->CheckCleanup(xmod == MODE_ANY && valid_query_id == 0); } // endif xmod // This is necessary for getting file length @@ -4247,8 +4300,8 @@ bool ha_connect::check_privileges(THD *thd, PTOS options, char *dbn, bool quick) } else return false; - /* check FILE_ACL */ - /* fall through */ + // check FILE_ACL + // fall through case TAB_ODBC: case TAB_JDBC: case TAB_MYSQL: @@ -7060,7 +7113,8 @@ static struct st_mysql_sys_var* connect_system_variables[]= { #if defined(XMSG) MYSQL_SYSVAR(errmsg_dir_path), #endif // XMSG - MYSQL_SYSVAR(json_grp_size), + MYSQL_SYSVAR(json_null), + MYSQL_SYSVAR(json_grp_size), #if defined(JDBC_SUPPORT) MYSQL_SYSVAR(jvm_path), MYSQL_SYSVAR(class_path), @@ -7083,6 +7137,6 @@ maria_declare_plugin(connect) NULL, /* status variables */ connect_system_variables, /* system variables */ "1.06.0001", /* string version */ - MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */ + MariaDB_PLUGIN_MATURITY_BETA /* maturity */ } maria_declare_plugin_end; diff --git a/storage/connect/ha_connect.h b/storage/connect/ha_connect.h index 8d8307b4bd1..9d71aaa5433 100644 --- a/storage/connect/ha_connect.h +++ b/storage/connect/ha_connect.h @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2015 +/* Copyright (C) MariaDB Corporation 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 @@ -14,6 +14,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ /** @file ha_connect.h + Author Olivier Bertrand @brief The ha_connect engine is a prototype storage engine to access external data. diff --git a/storage/connect/jdbconn.cpp b/storage/connect/jdbconn.cpp index f162a7ae645..811f998b55f 100644 --- a/storage/connect/jdbconn.cpp +++ b/storage/connect/jdbconn.cpp @@ -120,66 +120,81 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v) int type; switch (stp) { - case -1: // LONGVARCHAR - if (GetTypeConv() != TPC_YES) - return TYPE_ERROR; - else - len = MY_MIN(abs(len), GetConvSize()); - case 12: // VARCHAR - v = 'V'; - case 1: // CHAR - type = TYPE_STRING; - break; - case 2: // NUMERIC - case 3: // DECIMAL - case -3: // VARBINARY - type = TYPE_DECIM; - break; - case 4: // INTEGER - type = TYPE_INT; - break; - case 5: // SMALLINT - type = TYPE_SHORT; - break; - case -6: // TINYINT - case -7: // BIT - type = TYPE_TINY; - break; - case 6: // FLOAT - case 7: // REAL - case 8: // DOUBLE - type = TYPE_DOUBLE; - break; - case 93: // TIMESTAMP, DATETIME - type = TYPE_DATE; - len = 19 + ((prec) ? (prec+1) : 0); - v = (tn && toupper(tn[0]) == 'T') ? 'S' : 'E'; - break; - case 91: // DATE, YEAR - type = TYPE_DATE; + case -1: // LONGVARCHAR + case -16: // LONGNVARCHAR (unicode) + if (GetTypeConv() != TPC_YES) + return TYPE_ERROR; + else + len = MY_MIN(abs(len), GetConvSize()); + case 12: // VARCHAR + case -9: // NVARCHAR (unicode) + v = 'V'; + case 1: // CHAR + case -15: // NCHAR (unicode) + case -8: // ROWID + type = TYPE_STRING; + break; + case 2: // NUMERIC + case 3: // DECIMAL + case -3: // VARBINARY + type = TYPE_DECIM; + break; + case 4: // INTEGER + type = TYPE_INT; + break; + case 5: // SMALLINT + type = TYPE_SHORT; + break; + case -6: // TINYINT + case -7: // BIT + case 16: // BOOLEAN + type = TYPE_TINY; + break; + case 6: // FLOAT + case 7: // REAL + case 8: // DOUBLE + type = TYPE_DOUBLE; + break; + case 93: // TIMESTAMP, DATETIME + type = TYPE_DATE; + len = 19 + ((prec) ? (prec + 1) : 0); + v = (tn && toupper(tn[0]) == 'T') ? 'S' : 'E'; + break; + case 91: // DATE, YEAR + type = TYPE_DATE; - if (!tn || toupper(tn[0]) != 'Y') { - len = 10; - v = 'D'; - } else { - len = 4; - v = 'Y'; - } // endif len + if (!tn || toupper(tn[0]) != 'Y') { + len = 10; + v = 'D'; + } else { + len = 4; + v = 'Y'; + } // endif len - break; - case 92: // TIME - type = TYPE_DATE; - len = 8 + ((prec) ? (prec+1) : 0); - v = 'T'; - break; - case -5: // BIGINT - type = TYPE_BIGINT; - break; - case 0: // NULL - case -2: // BINARY - case -4: // LONGVARBINARY - default: - type = TYPE_ERROR; + break; + case 92: // TIME + type = TYPE_DATE; + len = 8 + ((prec) ? (prec + 1) : 0); + v = 'T'; + break; + case -5: // BIGINT + type = TYPE_BIGINT; + break; + case 0: // NULL + case -2: // BINARY + case -4: // LONGVARBINARY + case 70: // DATALINK + case 2000: // JAVA_OBJECT + case 2001: // DISTINCT + case 2002: // STRUCT + case 2003: // ARRAY + case 2004: // BLOB + case 2005: // CLOB + case 2006: // REF + case 2009: // SQLXML + case 2011: // NCLOB + default: + type = TYPE_ERROR; len = 0; } // endswitch type @@ -1200,7 +1215,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) if (rank == 0) if (!name || (jn = env->NewStringUTF(name)) == nullptr) { sprintf(g->Message, "Fail to allocate jstring %s", SVP(name)); - throw TYPE_AM_JDBC; + throw (int)TYPE_AM_JDBC; } // endif name // Returns 666 is case of error @@ -1208,7 +1223,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) if (Check((ctyp == 666) ? -1 : 1)) { sprintf(g->Message, "Getting ctyp: %s", Msg); - throw TYPE_AM_JDBC; + throw (int)TYPE_AM_JDBC; } // endif Check if (val->GetNullable()) @@ -1225,9 +1240,12 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) switch (ctyp) { case 12: // VARCHAR + case -9: // NVARCHAR case -1: // LONGVARCHAR case 1: // CHAR - case 3: // DECIMAL + case -15: // NCHAR + case 3: // DECIMAL + case -8: // ROWID if (jb && ctyp != 3) cn = (jstring)jb; else if (!gmID(g, chrfldid, "StringField", "(ILjava/lang/String;)Ljava/lang/String;")) @@ -1245,6 +1263,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) case 4: // INTEGER case 5: // SMALLINT case -6: // TINYINT + case 16: // BOOLEAN case -7: // BIT if (!gmID(g, intfldid, "IntField", "(ILjava/lang/String;)I")) val->SetValue((int)env->CallIntMethod(job, intfldid, rank, jn)); @@ -1315,7 +1334,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) env->DeleteLocalRef(jn); sprintf(g->Message, "SetColumnValue: %s rank=%d ctyp=%d", Msg, rank, (int)ctyp); - throw TYPE_AM_JDBC; + throw (int)TYPE_AM_JDBC; } // endif Check if (rank == 0) diff --git a/storage/connect/json.cpp b/storage/connect/json.cpp index f8b1caa13e2..da94d4e227c 100644 --- a/storage/connect/json.cpp +++ b/storage/connect/json.cpp @@ -1,5 +1,5 @@ /*************** json CPP Declares Source Code File (.H) ***************/ -/* Name: json.cpp Version 1.3 */ +/* Name: json.cpp Version 1.4 */ /* */ /* (C) Copyright to the author Olivier BERTRAND 2014 - 2017 */ /* */ @@ -53,6 +53,38 @@ void trans_func(unsigned int u, _EXCEPTION_POINTERS* pExp) char *GetExceptionDesc(PGLOBAL g, unsigned int e); #endif // SE_CATCH +char *GetJsonNull(void); + +/***********************************************************************/ +/* IsNum: check whether this string is all digits. */ +/***********************************************************************/ +bool IsNum(PSZ s) +{ + for (char *p = s; *p; p++) + if (*p == ']') + break; + else if (!isdigit(*p) || *p == '-') + return false; + + return true; +} // end of IsNum + +/***********************************************************************/ +/* NextChr: return the first found '[' or Sep pointer. */ +/***********************************************************************/ +char *NextChr(PSZ s, char sep) +{ + char *p1 = strchr(s, '['); + char *p2 = strchr(s, sep); + + if (!p2) + return p1; + else if (p1) + return MY_MIN(p1, p2); + + return p2; +} // end of NextChr + /***********************************************************************/ /* Parse a json string. */ @@ -933,6 +965,25 @@ return false; /* -------------------------- Class JOBJECT -------------------------- */ +/***********************************************************************/ +/* Return the number of pairs in this object. */ +/***********************************************************************/ +int JOBJECT::GetSize(bool b) +{ + if (b) { + // Return only non null pairs + int n = 0; + + for (PJPR jpp = First; jpp; jpp = jpp->Next) + if (jpp->Val && !jpp->Val->IsNull()) + n++; + + return n; + } else + return Size; + +} // end of GetSize + /***********************************************************************/ /* Add a new pair to an Object. */ /***********************************************************************/ @@ -992,14 +1043,31 @@ PSZ JOBJECT::GetText(PGLOBAL g, PSZ text) if (!First && n) return NULL; - else for (PJPR jp = First; jp; jp = jp->Next) + else if (n == 1 && Size == 1 && !strcmp(First->GetKey(), "$date")) { + int i; + + First->Val->GetText(g, text); + i = (text[1] == '-' ? 2 : 1); + + if (IsNum(text + i)) { + // Date is in milliseconds + int j = (int)strlen(text); + + if (j >= 4 + i) + text[j - 3] = 0; // Change it to seconds + else + strcpy(text, " 0"); + + } // endif text + + } else for (PJPR jp = First; jp; jp = jp->Next) jp->Val->GetText(g, text); if (n) PlugSubAlloc(g, NULL, strlen(text) + 1); return text + n; -} // end of GetValue; +} // end of GetText; /***********************************************************************/ /* Merge two objects. */ @@ -1040,7 +1108,7 @@ void JOBJECT::SetValue(PGLOBAL g, PJVAL jvp, PCSZ key) } // end of SetValue /***********************************************************************/ -/* Delete a value corresponding to the given key. */ +/* Delete a value corresponding to the given key. */ /***********************************************************************/ void JOBJECT::DeleteKey(PCSZ key) { @@ -1070,6 +1138,25 @@ bool JOBJECT::IsNull(void) /* -------------------------- Class JARRAY --------------------------- */ +/***********************************************************************/ +/* Return the number of values in this object. */ +/***********************************************************************/ +int JARRAY::GetSize(bool b) +{ + if (b) { + // Return only non null values + int n = 0; + + for (PJVAL jvp = First; jvp; jvp = jvp->Next) + if (!jvp->IsNull()) + n++; + + return n; + } else + return Size; + +} // end of GetSize + /***********************************************************************/ /* Make the array of values from the values list. */ /***********************************************************************/ @@ -1178,18 +1265,42 @@ bool JARRAY::SetValue(PGLOBAL g, PJVAL jvp, int n) return false; } // end of SetValue +/***********************************************************************/ +/* Return the text corresponding to all values. */ +/***********************************************************************/ +PSZ JARRAY::GetText(PGLOBAL g, PSZ text) +{ + int n; + PJVAL jp; + + if (!text) { + text = (char*)PlugSubAlloc(g, NULL, 0); + text[0] = 0; + n = 1; + } else + n = 0; + + for (jp = First; jp; jp = jp->Next) + jp->GetText(g, text); + + if (n) + PlugSubAlloc(g, NULL, strlen(text) + 1); + + return text + n; +} // end of GetText; + /***********************************************************************/ /* Delete a Value from the Arrays Value list. */ /***********************************************************************/ bool JARRAY::DeleteValue(int n) { - PJVAL jvp = GetValue(n); + PJVAL jvp = GetValue(n); - if (jvp) { - jvp->Del = true; - return false; - } else - return true; + if (jvp) { + jvp->Del = true; + return false; + } else + return true; } // end of DeleteValue @@ -1239,7 +1350,7 @@ JTYP JVALUE::GetValType(void) else if (Value) return (JTYP)Value->GetType(); else - return (JTYP)TYPE_VOID; + return TYPE_NULL; } // end of GetValType @@ -1303,7 +1414,7 @@ PSZ JVALUE::GetString(void) /***********************************************************************/ PSZ JVALUE::GetText(PGLOBAL g, PSZ text) { - if (Jsp && Jsp->GetType() == TYPE_JOB) + if (Jsp) return Jsp->GetText(g, text); char buf[32]; @@ -1311,8 +1422,8 @@ PSZ JVALUE::GetText(PGLOBAL g, PSZ text) if (s) strcat(strcat(text, " "), s); - else - strcat(text, " ???"); + else if (GetJsonNull()) + strcat(strcat(text, " "), GetJsonNull()); return text; } // end of GetText diff --git a/storage/connect/json.h b/storage/connect/json.h index 49675ce8559..daed055435b 100644 --- a/storage/connect/json.h +++ b/storage/connect/json.h @@ -1,7 +1,7 @@ /**************** json H Declares Source Code File (.H) ****************/ /* Name: json.h Version 1.2 */ /* */ -/* (C) Copyright to the author Olivier BERTRAND 2014 - 2015 */ +/* (C) Copyright to the author Olivier BERTRAND 2014 - 2017 */ /* */ /* This file contains the JSON classes declares. */ /***********************************************************************/ @@ -13,11 +13,13 @@ #define X #endif -enum JTYP {TYPE_STRG = 1, - TYPE_DBL = 2, - TYPE_BOOL = 4, - TYPE_BINT = 5, - TYPE_INTG = 7, +enum JTYP {TYPE_NULL = TYPE_VOID, + TYPE_STRG = TYPE_STRING, + TYPE_DBL = TYPE_DOUBLE, + TYPE_BOOL = TYPE_TINY, + TYPE_BINT = TYPE_BIGINT, + TYPE_DTM = TYPE_DATE, + TYPE_INTG = TYPE_INT, TYPE_JSON = 12, TYPE_JAR, TYPE_JOB, @@ -145,6 +147,7 @@ class JSON : public BLOCK { JSON(void) {Size = 0;} int size(void) {return Size;} + virtual int GetSize(bool b) {return Size;} virtual void Clear(void) {Size = 0;} virtual JTYP GetType(void) {return TYPE_JSON;} virtual JTYP GetValType(void) {X return TYPE_JSON;} @@ -192,10 +195,11 @@ class JOBJECT : public JSON { using JSON::GetValue; using JSON::SetValue; - virtual void Clear(void) {First = Last = NULL; Size = 0;} + virtual void Clear(void) {First = Last = NULL; Size = 0;} virtual JTYP GetType(void) {return TYPE_JOB;} virtual PJPR GetFirst(void) {return First;} - virtual PJPR AddPair(PGLOBAL g, PCSZ key); + virtual int GetSize(bool b); + virtual PJPR AddPair(PGLOBAL g, PCSZ key); virtual PJOB GetObject(void) {return this;} virtual PJVAL GetValue(const char* key); virtual PJAR GetKeyList(PGLOBAL g); @@ -221,11 +225,13 @@ class JARRAY : public JSON { using JSON::GetValue; using JSON::SetValue; virtual void Clear(void) {First = Last = NULL; Size = 0;} - virtual JTYP GetType(void) {return TYPE_JAR;} + virtual JTYP GetType(void) {return TYPE_JAR;} virtual PJAR GetArray(void) {return this;} - PJVAL AddValue(PGLOBAL g, PJVAL jvp = NULL, int *x = NULL); + virtual int GetSize(bool b); + PJVAL AddValue(PGLOBAL g, PJVAL jvp = NULL, int *x = NULL); virtual void InitArray(PGLOBAL g); virtual PJVAL GetValue(int i); + virtual PSZ GetText(PGLOBAL g, PSZ text); virtual bool Merge(PGLOBAL g, PJSON jsp); virtual bool SetValue(PGLOBAL g, PJVAL jvp, int i); virtual bool DeleteValue(int n); @@ -245,20 +251,20 @@ class JARRAY : public JSON { class JVALUE : public JSON { friend class JARRAY; friend class JSNX; + friend class JSONCOL; friend PJVAL ParseValue(PGLOBAL, int&, STRG&, bool*); friend bool SerializeValue(JOUT *, PJVAL); public: - JVALUE(void) : JSON() - {Jsp = NULL; Value = NULL; Next = NULL; Del = false;} + JVALUE(void) : JSON() {Clear();} JVALUE(PJSON jsp) : JSON() - {Jsp = jsp; Value = NULL; Next = NULL; Del = false;} - JVALUE(PGLOBAL g, PVAL valp); + {Jsp = jsp; Value = NULL; Next = NULL; Del = false; Size = 1;} + JVALUE(PGLOBAL g, PVAL valp); JVALUE(PGLOBAL g, PCSZ strp); using JSON::GetValue; using JSON::SetValue; virtual void Clear(void) - {Jsp = NULL; Value = NULL; Next = NULL; Del = false; Size = 0;} + {Jsp = NULL; Value = NULL; Next = NULL; Del = false; Size = 1;} virtual JTYP GetType(void) {return TYPE_JVAL;} virtual JTYP GetValType(void); virtual PJOB GetObject(void); diff --git a/storage/connect/jsonudf.cpp b/storage/connect/jsonudf.cpp index 4e00703d9ef..23c2b9785bc 100644 --- a/storage/connect/jsonudf.cpp +++ b/storage/connect/jsonudf.cpp @@ -1,5 +1,5 @@ /****************** jsonudf C++ Program Source Code File (.CPP) ******************/ -/* PROGRAM NAME: jsonudf Version 1.5 */ +/* PROGRAM NAME: jsonudf Version 1.6 */ /* (C) Copyright to the author Olivier BERTRAND 2015-2017 */ /* This program are the JSON User Defined Functions . */ /*********************************************************************************/ @@ -27,7 +27,8 @@ #endif #define M 7 -uint GetJsonGrpSize(void); +char *GetJsonNull(void); +uint GetJsonGrpSize(void); static int IsJson(UDF_ARGS *args, uint i); static PSZ MakePSZ(PGLOBAL g, UDF_ARGS *args, int i); static char *handle_item(UDF_INIT *initid, UDF_ARGS *args, char *result, @@ -327,11 +328,13 @@ void JSNX::SetJsonValue(PGLOBAL g, PVAL vp, PJVAL val, int n) SetJsonValue(g, vp, val->GetArray()->GetValue(0), n); break; case TYPE_JOB: - // if (!vp->IsTypeNum() || !Strict) { +// if (!vp->IsTypeNum() || !Strict) { vp->SetValue_psz(val->GetObject()->GetText(g, NULL)); break; - // } // endif Type +// } // endif Type + case TYPE_NULL: + vp->SetNull(true); default: vp->Reset(); } // endswitch Type @@ -459,7 +462,7 @@ PVAL JSNX::ExpandArray(PGLOBAL g, PJAR arp, int n) /*********************************************************************************/ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) { -//int i, ars, nv = 0, nextsame = Tjp->NextSame; + //int i, ars, nv = 0, nextsame = Tjp->NextSame; int i, ars, nv = 0, nextsame = 0; my_bool err; OPVAL op = Nodes[n].Op; @@ -468,15 +471,16 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) JVALUE jval; vp->Reset(); -//ars = MY_MIN(Tjp->Limit, arp->size()); ars = arp->size(); for (i = 0; i < ars; i++) { jvrp = arp->GetValue(i); -// do { - if (n < Nod - 1 && jvrp->GetJson()) { -// Tjp->NextSame = nextsame; + if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) { + if (jvrp->IsNull()) { + jvrp->Value = AllocateValue(g, GetJsonNull(), TYPE_STRING); + jvp = jvrp; + } else if (n < Nod - 1 && jvrp->GetJson()) { jval.SetValue(GetColumnValue(g, jvrp->GetJson(), n + 1)); jvp = &jval; } else @@ -490,25 +494,25 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) if (!MulVal->IsZero()) { switch (op) { - case OP_CNC: - if (Nodes[n].CncVal) { - val[0] = Nodes[n].CncVal; - err = vp->Compute(g, val, 1, op); - } // endif CncVal + case OP_CNC: + if (Nodes[n].CncVal) { + val[0] = Nodes[n].CncVal; + err = vp->Compute(g, val, 1, op); + } // endif CncVal - val[0] = MulVal; - err = vp->Compute(g, val, 1, op); - break; - // case OP_NUM: - case OP_SEP: - val[0] = Nodes[n].Valp; - val[1] = MulVal; - err = vp->Compute(g, val, 2, OP_ADD); - break; - default: - val[0] = Nodes[n].Valp; - val[1] = MulVal; - err = vp->Compute(g, val, 2, op); + val[0] = MulVal; + err = vp->Compute(g, val, 1, op); + break; + // case OP_NUM: + case OP_SEP: + val[0] = Nodes[n].Valp; + val[1] = MulVal; + err = vp->Compute(g, val, 2, OP_ADD); + break; + default: + val[0] = Nodes[n].Valp; + val[1] = MulVal; + err = vp->Compute(g, val, 2, op); } // endswitch Op if (err) @@ -516,7 +520,7 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) } // endif Zero -// } while (Tjp->NextSame > nextsame); + } // endif jvrp } // endfor i @@ -1081,6 +1085,7 @@ inline void JsonMemSave(PGLOBAL g) /*********************************************************************************/ inline void JsonFreeMem(PGLOBAL g) { + g->Activityp = NULL; PlugExit(g); } /* end of JsonFreeMem */ diff --git a/storage/connect/msgid.h b/storage/connect/msgid.h index 0e9c036dc49..cee78aa1783 100644 --- a/storage/connect/msgid.h +++ b/storage/connect/msgid.h @@ -1,3 +1,4 @@ +/* Copyright (C) MariaDB Corporation Ab */ #define MSG_ACCESS_VIOLATN 200 #define MSG_ADD_BAD_TYPE 201 #define MSG_ALLOC_ERROR 202 diff --git a/storage/connect/mycat.cc b/storage/connect/mycat.cc index 750cf3c0639..c854ba72bff 100644 --- a/storage/connect/mycat.cc +++ b/storage/connect/mycat.cc @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2017 +/* Copyright (C) MariaDB Corporation 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 diff --git a/storage/connect/mycat.h b/storage/connect/mycat.h index b6bdd5e5e11..c0f70522b69 100644 --- a/storage/connect/mycat.h +++ b/storage/connect/mycat.h @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2015 +/* Copyright (C) MariaDB Corporation 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 @@ -15,7 +15,7 @@ /**************** MYCAT H Declares Source Code File (.H) ***************/ /* Name: MYCAT.H Version 2.3 */ -/* */ +/* Author: Olivier Bertrand */ /* This file contains the CONNECT plugin MYCAT class definitions. */ /***********************************************************************/ #ifndef __MYCAT__H diff --git a/storage/connect/mysql-test/connect/r/drop-open-error.result b/storage/connect/mysql-test/connect/r/drop-open-error.result new file mode 100644 index 00000000000..db699d62421 --- /dev/null +++ b/storage/connect/mysql-test/connect/r/drop-open-error.result @@ -0,0 +1,14 @@ +create table t1 (c varchar(8)); +create table tcon engine=connect table_type=mysql CONNECTION='mysql://root@localhost/test/t1' SRCDEF='select c from t1 where c in ("foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar")'; +ERROR HY000: Engine CONNECT failed to discover table `test`.`tcon` with 'CREATE TABLE whatever (`c` VARCHAR(8)) TABLE_TYPE='mysql' SRCDEF='select c from t1 where c in ("foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", " +DROP TABLE tcon; +drop table mdev9949; +drop table t1; +select @@secure_file_priv 'must be NULL'; +must be NULL +NULL +create table t1 (a char(16)) engine=myisam; +insert into t1 values('Hello World!'); +create table t2 engine=connect file_name='foo/bar.txt' as select * from t1; +ERROR HY000: Got error 174 'Open(a+b) error 2 on foo/bar.txt: No such file or directory' from CONNECT +drop table t1; diff --git a/storage/connect/mysql-test/connect/r/grant2.result b/storage/connect/mysql-test/connect/r/grant2.result index f4a78f9b891..0259dd74cdc 100644 --- a/storage/connect/mysql-test/connect/r/grant2.result +++ b/storage/connect/mysql-test/connect/r/grant2.result @@ -1,6 +1,7 @@ # # MDEV-7574 Security definer views don't work with CONNECT ODBC tables # +CREATE USER user@localhost; GRANT ALL PRIVILEGES ON *.* TO user@localhost; REVOKE FILE ON *.* FROM user@localhost; # Testing SQLCOM_SELECT @@ -621,7 +622,7 @@ test.t1 optimize status OK OPTIMIZE TABLE t1; Table Op Msg_type Msg_text test.t1 optimize Error Access denied for user 'user'@'localhost' (using password: NO) -test.t1 optimize Error Can't lock file (errno: 122 "Internal (unspecified) error in handler") +test.t1 optimize Error Got error 122 'This operation requires the FILE privilege' from CONNECT test.t1 optimize error Corrupt DROP TABLE t1; # Testing SQLCOM_ALTER_TABLE (adding columns) diff --git a/storage/connect/mysql-test/connect/r/infoschema-9739.result b/storage/connect/mysql-test/connect/r/infoschema-9739.result new file mode 100644 index 00000000000..bcebec1d0e0 --- /dev/null +++ b/storage/connect/mysql-test/connect/r/infoschema-9739.result @@ -0,0 +1,12 @@ +Warnings: +Warning 1105 No file name. Table will use t1.xml +create table t1 (i int) engine=Connect table_type=XML; +Warnings: +Warning 1105 No file name. Table will use t1.xml +select * from information_schema.tables where create_options like '%table_type=XML%'; +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT +Warnings: +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1296 Got error 174 'File t1.xml not found' from CONNECT +drop table t1; diff --git a/storage/connect/mysql-test/connect/r/json_udf.result b/storage/connect/mysql-test/connect/r/json_udf.result index 1e83834cb8f..27f4f8b5319 100644 --- a/storage/connect/mysql-test/connect/r/json_udf.result +++ b/storage/connect/mysql-test/connect/r/json_udf.result @@ -608,7 +608,7 @@ JsonGet_String(Json_File('test/fx.json'), '[1]:*') {"_id":6,"type":"car","item":"roadster","mileage":56000,"ratings":[6,9]} SELECT JsonGet_String(Json_File('test/fx.json'), '[1]'); JsonGet_String(Json_File('test/fx.json'), '[1]') -6 car roadster 56000 ??? +6 car roadster 56000 6 9 SELECT JsonGet_Int(Json_File('test/fx.json'), '[1]:mileage') AS Mileage; Mileage 56000 diff --git a/storage/connect/mysql-test/connect/r/mysql_new.result b/storage/connect/mysql-test/connect/r/mysql_new.result index 327afa34446..309d69abe7e 100644 --- a/storage/connect/mysql-test/connect/r/mysql_new.result +++ b/storage/connect/mysql-test/connect/r/mysql_new.result @@ -178,7 +178,7 @@ DROP TABLE t1; # # Testing temporal data types # -CREATE TABLE t1 (a date, b datetime, c time, d timestamp, e year); +CREATE TABLE t1 (a date, b datetime, c time, d timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, e year); SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/storage/connect/mysql-test/connect/r/odbc_firebird.result b/storage/connect/mysql-test/connect/r/odbc_firebird.result new file mode 100644 index 00000000000..b0c2582abeb --- /dev/null +++ b/storage/connect/mysql-test/connect/r/odbc_firebird.result @@ -0,0 +1,165 @@ +SET NAMES utf8; +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CONNECTION='Bad connection string'; +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Sources; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `Name` varchar(256) NOT NULL, + `Description` varchar(256) DEFAULT NULL +) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Sources' +SELECT * FROM t1; +Name Description +dBASE Files Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) +PLUGDB_DEBUG PLUGODBC_Driver +PLUGDB_ODBC PLUGODBC_Driver +SafeDB_ODBC SDB_ODBC_Driver +Firebird Firebird/InterBase(r) driver +ConnectEngineXLS Microsoft Excel Driver (*.xls) +Excel Files Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) +MariaODBC MySQL ODBC 5.2a Driver +MariaODBCbeta MariaDB ODBC 1.0 Driver +MyODBC MySQL ODBC 5.2a Driver +MS Access Database Microsoft Access Driver (*.mdb, *.accdb) +MS Access Db1 Microsoft Access Driver (*.mdb) +MySQL-ANSI MySQL ODBC 5.3 ANSI Driver +MySQL-Unicode MySQL ODBC 5.3 Unicode Driver +Xtreme Sample Database 2008 Microsoft Access Driver (*.mdb) +PlugDB test PLUGODBC_Driver +SQLite3 Datasource SQLite3 ODBC Driver +SQLite Datasource SQLite ODBC Driver +SQLite UTF-8 Datasource SQLite ODBC (UTF-8) Driver +ORACLE_TEST Oracle in XE +ConnectEnginePostgresql PostgreSQL ODBC Driver(ANSI) +ConnectEngineOracle Oracle in XE +ConnectEngineSQLServer SQL Server +DROP TABLE t1; +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Drivers; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `Description` char(128) NOT NULL, + `Attributes` varchar(256) DEFAULT NULL +) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Drivers' +SELECT * FROM t1; +Description Attributes +SQL Server UsageCount=1;SQLLevel=1;FileUsage=0;DriverODBCVer=03.50;ConnectFunctions=YYY;APILevel=2;CPTimeout=60; +Microsoft ODBC for Oracle UsageCount=1;SQLLevel=1;FileUsage=0;DriverODBCVer=02.50;ConnectFunctions=YYY;APILevel=1;CPTimeout=120; +Microsoft Access Driver (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0; +Microsoft Access-Treiber (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0; +Driver do Microsoft Access (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0; +Microsoft dBase Driver (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0; +Microsoft dBase-Treiber (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0; +Driver do Microsoft dBase (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0; +Microsoft Excel Driver (*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0; +Microsoft Excel-Treiber (*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0; +Driver do Microsoft Excel(*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0; +Microsoft Paradox Driver (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0; +Microsoft Paradox-Treiber (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0; +Driver do Microsoft Paradox (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0; +Microsoft Text Driver (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0; +Microsoft Text-Treiber (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0; +Driver da Microsoft para arquivos texto (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0; +Microsoft Visual FoxPro Driver UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; +Microsoft FoxPro VFP Driver (*.dbf) UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; +Microsoft dBase VFP Driver (*.dbf) UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; +Microsoft Visual FoxPro-Treiber UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; +Driver para o Microsoft Visual FoxPro UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; +SQL Native Client UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=09.00;FileUsage=0;SQLLevel=1; +CR Sybase Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=0;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; +CR SQL Server Native Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=1;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; +CR SQL Server Classic Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=1;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; +CR TextFile ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=1;FileExtns=*.*;SQLLevel=0;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; +PLUGODBC_Driver UsageCount=1; +SDB_ODBC_Driver UsageCount=2; +Microsoft Access Text Driver (*.txt, *.csv) SQLLevel=0;FileExtns=*.txt, *.csv;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; +Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) SQLLevel=0;FileExtns=*.dbf, *.ndx, *.mdx;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; +Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) SQLLevel=0;FileExtns=*.xls,*.xlsx, *.xlsb;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; +Microsoft Access Driver (*.mdb, *.accdb) SQLLevel=0;FileExtns=*.mdb,*.accdb;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; +SQLite3 ODBC Driver UsageCount=1; +SQLite ODBC Driver UsageCount=1; +SQLite ODBC (UTF-8) Driver UsageCount=1; +Oracle in XE ConnectionFunctions=YYY;DriverODBCVer=03.51;CPTimeout=60;FileUsage=0;APILevel=1;SQLLevel=1; +Oracle in instantclient_12_1 APILevel=1;ConnectionFunctions=YYY;CPTimeout=60;DriverODBCVer=03.51;FileUsage=0;SQLLevel=1; +PostgreSQL ODBC Driver(ANSI) APILevel=1;ConnectFunctions=YYN;DriverODBCVer=09.02.0100;FileUsage=0;SQLLevel=1; +PostgreSQL ODBC Driver(UNICODE) APILevel=1;ConnectFunctions=YYN;DriverODBCVer=09.02.0100;FileUsage=0;SQLLevel=1; +SQL Server Native Client 11.0 UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1; +MariaDB ODBC 1.0 Driver UsageCount=1; +Firebird/InterBase(r) driver UsageCount=1;FileExtns=*.fdb,*.gdb;APILevel=1;ConnectFunctions=YYY;FileUsage=0;DriverODBCVer=03.51;SQLLevel=1; +MySQL ODBC 5.3 ANSI Driver UsageCount=1; +MySQL ODBC 5.3 Unicode Driver UsageCount=1; +DROP TABLE t1; +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Tables CONNECTION='Not important'; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `Table_Cat` char(128) DEFAULT NULL, + `Table_Schema` char(128) DEFAULT NULL, + `Table_Name` char(128) NOT NULL, + `Table_Type` char(16) NOT NULL, + `Remark` char(255) DEFAULT NULL +) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='Not important' `TABLE_TYPE`='ODBC' `CATFUNC`='Tables' +DROP TABLE t1; +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Columns CONNECTION='Not important'; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `Table_Cat` char(128) DEFAULT NULL, + `Table_Schema` char(128) DEFAULT NULL, + `Table_Name` char(128) NOT NULL, + `Column_Name` char(128) NOT NULL, + `Data_Type` smallint(6) NOT NULL, + `Type_Name` char(30) NOT NULL, + `Column_Size` int(10) NOT NULL, + `Buffer_Length` int(10) NOT NULL, + `Decimal_Digits` smallint(6) DEFAULT NULL, + `Radix` smallint(6) DEFAULT NULL, + `Nullable` smallint(6) NOT NULL, + `Remarks` char(255) DEFAULT NULL +) ENGINE=CONNECT DEFAULT CHARSET=latin1 CONNECTION='Not important' `TABLE_TYPE`='ODBC' `CATFUNC`='Columns' +DROP TABLE t1; +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC TABNAME='EMPLOYEE' CONNECTION='DSN=Firebird;UID=SYSDBA;PWD=masterkey'; +SELECT * FROM t1; +EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_COUNTRY SALARY FULL_NAME +2 Robert Nelson 250 1988-12-28 00:00:00 600 VP 2 USA 105900.00 Nelson, Robert +4 Bruce Young 233 1988-12-28 00:00:00 621 Eng 2 USA 97500.00 Young, Bruce +5 Kim Lambert 22 1989-02-06 00:00:00 130 Eng 2 USA 102750.00 Lambert, Kim +8 Leslie Johnson 410 1989-04-05 00:00:00 180 Mktg 3 USA 64635.00 Johnson, Leslie +9 Phil Forest 229 1989-04-17 00:00:00 622 Mngr 3 USA 75060.00 Forest, Phil +11 K. J. Weston 34 1990-01-17 00:00:00 130 SRep 4 USA 86292.94 Weston, K. J. +12 Terri Lee 256 1990-05-01 00:00:00 000 Admin 4 USA 53793.00 Lee, Terri +14 Stewart Hall 227 1990-06-04 00:00:00 900 Finan 3 USA 69482.63 Hall, Stewart +15 Katherine Young 231 1990-06-14 00:00:00 623 Mngr 3 USA 67241.25 Young, Katherine +20 Chris Papadopoulos 887 1990-01-01 00:00:00 671 Mngr 3 USA 89655.00 Papadopoulos, Chris +24 Pete Fisher 888 1990-09-12 00:00:00 671 Eng 3 USA 81810.19 Fisher, Pete +28 Ann Bennet 5 1991-02-01 00:00:00 120 Admin 5 England 22935.00 Bennet, Ann +29 Roger De Souza 288 1991-02-18 00:00:00 623 Eng 3 USA 69482.63 De Souza, Roger +34 Janet Baldwin 2 1991-03-21 00:00:00 110 Sales 3 USA 61637.81 Baldwin, Janet +36 Roger Reeves 6 1991-04-25 00:00:00 120 Sales 3 England 33620.63 Reeves, Roger +37 Willie Stansbury 7 1991-04-25 00:00:00 120 Eng 4 England 39224.06 Stansbury, Willie +44 Leslie Phong 216 1991-06-03 00:00:00 623 Eng 4 USA 56034.38 Phong, Leslie +45 Ashok Ramanathan 209 1991-08-01 00:00:00 621 Eng 3 USA 80689.50 Ramanathan, Ashok +46 Walter Steadman 210 1991-08-09 00:00:00 900 CFO 1 USA 116100.00 Steadman, Walter +52 Carol Nordstrom 420 1991-10-02 00:00:00 180 PRel 4 USA 42742.50 Nordstrom, Carol +61 Luke Leung 3 1992-02-18 00:00:00 110 SRep 4 USA 68805.00 Leung, Luke +65 Sue Anne O'Brien 877 1992-03-23 00:00:00 670 Admin 5 USA 31275.00 O'Brien, Sue Anne +71 Jennifer M. Burbank 289 1992-04-15 00:00:00 622 Eng 3 USA 53167.50 Burbank, Jennifer M. +72 Claudia Sutherland NULL 1992-04-20 00:00:00 140 SRep 4 Canada 100914.00 Sutherland, Claudia +83 Dana Bishop 290 1992-06-01 00:00:00 621 Eng 3 USA 62550.00 Bishop, Dana +85 Mary S. MacDonald 477 1992-06-01 00:00:00 100 VP 2 USA 111262.50 MacDonald, Mary S. +94 Randy Williams 892 1992-08-08 00:00:00 672 Mngr 4 USA 56295.00 Williams, Randy +105 Oliver H. Bender 255 1992-10-08 00:00:00 000 CEO 1 USA 212850.00 Bender, Oliver H. +107 Kevin Cook 894 1993-02-01 00:00:00 670 Dir 2 USA 111262.50 Cook, Kevin +109 Kelly Brown 202 1993-02-04 00:00:00 600 Admin 5 USA 27000.00 Brown, Kelly +110 Yuki Ichida 22 1993-02-04 00:00:00 115 Eng 3 Japan 6000000.00 Ichida, Yuki +113 Mary Page 845 1993-04-12 00:00:00 671 Eng 4 USA 48000.00 Page, Mary +114 Bill Parker 247 1993-06-01 00:00:00 623 Eng 5 USA 35000.00 Parker, Bill +118 Takashi Yamamoto 23 1993-07-01 00:00:00 115 SRep 4 Japan 7480000.00 Yamamoto, Takashi +121 Roberto Ferrari 1 1993-07-12 00:00:00 125 SRep 4 Italy 99000000.00 Ferrari, Roberto +127 Michael Yanowski 492 1993-08-09 00:00:00 100 SRep 4 USA 44000.00 Yanowski, Michael +134 Jacques Glon NULL 1993-08-23 00:00:00 123 SRep 4 France 390500.00 Glon, Jacques +136 Scott Johnson 265 1993-09-13 00:00:00 623 Doc 3 USA 60000.00 Johnson, Scott +138 T.J. Green 218 1993-11-01 00:00:00 621 Eng 4 USA 36000.00 Green, T.J. +141 Pierre Osborne NULL 1994-01-03 00:00:00 121 SRep 4 Switzerland 110000.00 Osborne, Pierre +144 John Montgomery 820 1994-03-30 00:00:00 672 Eng 5 USA 35000.00 Montgomery, John +145 Mark Guckenheimer 221 1994-05-02 00:00:00 622 Eng 5 USA 32000.00 Guckenheimer, Mark +DROP TABLE t1; diff --git a/storage/connect/mysql-test/connect/std_data/mdev9949.frm b/storage/connect/mysql-test/connect/std_data/mdev9949.frm new file mode 100644 index 00000000000..56bb9a71263 Binary files /dev/null and b/storage/connect/mysql-test/connect/std_data/mdev9949.frm differ diff --git a/storage/connect/mysql-test/connect/t/drop-open-error.opt b/storage/connect/mysql-test/connect/t/drop-open-error.opt new file mode 100644 index 00000000000..22520f0aa99 --- /dev/null +++ b/storage/connect/mysql-test/connect/t/drop-open-error.opt @@ -0,0 +1 @@ +--secure-file-priv="" diff --git a/storage/connect/mysql-test/connect/t/drop-open-error.test b/storage/connect/mysql-test/connect/t/drop-open-error.test new file mode 100644 index 00000000000..c952e016568 --- /dev/null +++ b/storage/connect/mysql-test/connect/t/drop-open-error.test @@ -0,0 +1,31 @@ +# +# tests for the case when open_table_def() fails from inside +# ha_connect::delete_or_rename_table() +# +# +# MDEV-9949 Connect Engine: long SRCDEF leads to broken table +# +let $datadir=`select @@datadir`; + +create table t1 (c varchar(8)); +#error ER_VALUE_TOO_LONG; +error ER_SQL_DISCOVER_ERROR; +# 34K SRCDEF line: +create table tcon engine=connect table_type=mysql CONNECTION='mysql://root@localhost/test/t1' SRCDEF='select c from t1 where c in ("foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar", "foo", "bar", "qux", "foobar")'; +DROP TABLE tcon; + +# copy the invalid frm (as created by the statement above before the MDEV-9949 fix) +copy_file $MTR_SUITE_DIR/std_data/mdev9949.frm $datadir/test/mdev9949.frm; +drop table mdev9949; +drop table t1; + +# +# MDEV-7935 CREATE TABLE ... AS SELECT ... can cause a Server crash (Assertion `0' in Protocol::end_statement) +# +select @@secure_file_priv 'must be NULL'; # otherwise foo/bar.txt won't be allowed +create table t1 (a char(16)) engine=myisam; +insert into t1 values('Hello World!'); +replace_regex @on .*/foo/@on foo/@; +error ER_GET_ERRMSG; +create table t2 engine=connect file_name='foo/bar.txt' as select * from t1; +drop table t1; diff --git a/storage/connect/mysql-test/connect/t/grant2.test b/storage/connect/mysql-test/connect/t/grant2.test index 4d136ec5f5d..8e7d9453e70 100644 --- a/storage/connect/mysql-test/connect/t/grant2.test +++ b/storage/connect/mysql-test/connect/t/grant2.test @@ -9,6 +9,7 @@ let $MYSQLD_DATADIR= `select @@datadir`; --echo # MDEV-7574 Security definer views don't work with CONNECT ODBC tables --echo # +CREATE USER user@localhost; GRANT ALL PRIVILEGES ON *.* TO user@localhost; REVOKE FILE ON *.* FROM user@localhost; diff --git a/storage/connect/mysql-test/connect/t/infoschema-9739.test b/storage/connect/mysql-test/connect/t/infoschema-9739.test new file mode 100644 index 00000000000..e9eb7fb796e --- /dev/null +++ b/storage/connect/mysql-test/connect/t/infoschema-9739.test @@ -0,0 +1,9 @@ +# +# MDEV-9739 Assertion `m_status == DA_ERROR || m_status == DA_OK' failed in Diagnostics_area::message() ; connect.xml* tests fail in buildbot +# + +--source have_libxml2.inc + +create table t1 (i int) engine=Connect table_type=XML; +select * from information_schema.tables where create_options like '%table_type=XML%'; +drop table t1; diff --git a/storage/connect/mysql-test/connect/t/mysql_new.test b/storage/connect/mysql-test/connect/t/mysql_new.test index c93f0407ca4..de9cae7b87b 100644 --- a/storage/connect/mysql-test/connect/t/mysql_new.test +++ b/storage/connect/mysql-test/connect/t/mysql_new.test @@ -304,7 +304,7 @@ DROP TABLE t1; --echo # Testing temporal data types --echo # -CREATE TABLE t1 (a date, b datetime, c time, d timestamp, e year); +CREATE TABLE t1 (a date, b datetime, c time, d timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, e year); SHOW CREATE TABLE t1; INSERT INTO t1 VALUES('2003-05-27 10:45:23','2003-05-27 10:45:23','2003-05-27 10:45:23','2003-05-27 10:45:23','2003-05-27 10:45:23'); SELECT * FROM t1; diff --git a/storage/connect/mysql-test/connect/t/odbc_firebird.test b/storage/connect/mysql-test/connect/t/odbc_firebird.test new file mode 100644 index 00000000000..c9279eec385 --- /dev/null +++ b/storage/connect/mysql-test/connect/t/odbc_firebird.test @@ -0,0 +1,35 @@ +--source have_odbc.inc + +SET NAMES utf8; + +# MS ODBC and unixODBC return different error message text, +# so disable displaying error messages +--disable_result_log ONCE +--error ER_UNKNOWN_ERROR +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CONNECTION='Bad connection string'; + +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Sources; +if (`select count(*)=0 from t1 where name='firebird'`) { + DROP TABLE t1; + skip No Firebird; +} +SHOW CREATE TABLE t1; +SELECT * FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Drivers; +SHOW CREATE TABLE t1; +SELECT * FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Tables CONNECTION='Not important'; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Columns CONNECTION='Not important'; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC TABNAME='EMPLOYEE' CONNECTION='DSN=Firebird;UID=SYSDBA;PWD=masterkey'; +SELECT * FROM t1; +DROP TABLE t1; diff --git a/storage/connect/mysql-test/connect/t/secure_file_priv.test b/storage/connect/mysql-test/connect/t/secure_file_priv.test index 46633502034..f7792536892 100644 --- a/storage/connect/mysql-test/connect/t/secure_file_priv.test +++ b/storage/connect/mysql-test/connect/t/secure_file_priv.test @@ -10,4 +10,4 @@ let $SECUREDIR= `select @@secure_file_priv`; INSERT INTO t1 VALUES (10); SELECT * FROM t1; DROP TABLE t1; ---remove_file $SECUREDIR/t1.dbf +--remove_file $MYSQL_TMP_DIR/t1.dbf diff --git a/storage/connect/noconst.c b/storage/connect/noconst.c new file mode 100644 index 00000000000..043eae7c54e --- /dev/null +++ b/storage/connect/noconst.c @@ -0,0 +1,38 @@ +/***********************************************************************/ +/* (C) Copyright to the author Olivier BERTRAND 2015 */ +/***********************************************************************/ +#include +#include +#include + +#if defined(__WIN__) +#define DllExport __declspec( dllexport ) +#else // !__WIN__ +#define DllExport +#endif // !__WIN__ + +extern "C" { + DllExport my_bool noconst_init(UDF_INIT*, UDF_ARGS*, char*); + DllExport char *noconst(UDF_INIT*, UDF_ARGS*, char*, unsigned long*, char*, char*); +} // extern "C" + +/***********************************************************************/ +/* Returns its argument saying it is not a constant. */ +/***********************************************************************/ +my_bool noconst_init(UDF_INIT *initid, UDF_ARGS *args, char *message) +{ + if (args->arg_count != 1 || args->arg_type[0] != STRING_RESULT) { + strcpy(message, "noconst unique argument must be a string"); + return true; + } // endif arg + + initid->const_item = false; // The trick! + return false; +} // end of noconst_init + +char *noconst(UDF_INIT *initid, UDF_ARGS *args, char *result, + unsigned long *res_length, char *, char *) +{ + return args->args[0]; +} // end of noconst + diff --git a/storage/connect/os.h b/storage/connect/os.h index 8056a272990..e2b165fb3f5 100644 --- a/storage/connect/os.h +++ b/storage/connect/os.h @@ -1,3 +1,4 @@ +/* Copyright (C) MariaDB Corporation Ab */ #ifndef _OS_H_INCLUDED #define _OS_H_INCLUDED diff --git a/storage/connect/osutil.c b/storage/connect/osutil.c index 66743c7403b..da896fec50e 100644 --- a/storage/connect/osutil.c +++ b/storage/connect/osutil.c @@ -1,3 +1,4 @@ +/* Copyright (C) MariaDB Corporation Ab */ #include "my_global.h" #include #include diff --git a/storage/connect/osutil.h b/storage/connect/osutil.h index ac63d4ee973..7e6b8823b9b 100644 --- a/storage/connect/osutil.h +++ b/storage/connect/osutil.h @@ -1,3 +1,4 @@ +/* Copyright (C) MariaDB Corporation Ab */ #ifndef __OSUTIL_H__ #define __OSUTIL_H__ diff --git a/storage/connect/plgdbsem.h b/storage/connect/plgdbsem.h index 2198c44c200..5729b5bd6ff 100644 --- a/storage/connect/plgdbsem.h +++ b/storage/connect/plgdbsem.h @@ -36,8 +36,6 @@ enum BLKTYP {TYPE_TABLE = 50, /* Table Name/Srcdef/... Block */ TYPE_COLCRT = 71, /* Column creation block */ TYPE_CONST = 72, /* Constant */ -/*-------------------- type tokenized string --------------------------*/ - TYPE_DATE = 8, /* Timestamp */ /*-------------------- additional values used by LNA ------------------*/ TYPE_COLIST = 14, /* Column list */ TYPE_COL = 41, /* Column */ diff --git a/storage/connect/plgdbutl.cpp b/storage/connect/plgdbutl.cpp index b6f59bac8cf..03a326ce89a 100644 --- a/storage/connect/plgdbutl.cpp +++ b/storage/connect/plgdbutl.cpp @@ -82,14 +82,10 @@ extern "C" { extern char version[]; } // extern "C" -#if defined(__WIN__) -extern CRITICAL_SECTION parsec; // Used calling the Flex parser -#else // !__WIN__ extern pthread_mutex_t parmut; -#endif // !__WIN__ // The debug trace used by the main thread - FILE *pfile = NULL; +FILE *pfile = NULL; MBLOCK Nmblk = {NULL, false, 0, false, NULL}; // Used to init MBLOCK's @@ -473,7 +469,7 @@ bool PlugEvalLike(PGLOBAL g, LPCSTR strg, LPCSTR pat, bool ci) tp = g->Message; else if (!(tp = new char[strlen(pat) + strlen(strg) + 2])) { strcpy(g->Message, MSG(NEW_RETURN_NULL)); - throw OP_LIKE; + throw (int)OP_LIKE; } /* endif tp */ sp = tp + strlen(pat) + 1; @@ -484,7 +480,7 @@ bool PlugEvalLike(PGLOBAL g, LPCSTR strg, LPCSTR pat, bool ci) tp = g->Message; /* Use this as temporary work space. */ else if (!(tp = new char[strlen(pat) + 1])) { strcpy(g->Message, MSG(NEW_RETURN_NULL)); - throw OP_LIKE; + throw (int)OP_LIKE; } /* endif tp */ strcpy(tp, pat); /* Make a copy to be worked into */ @@ -697,21 +693,9 @@ PDTP MakeDateFormat(PGLOBAL g, PCSZ dfmt, bool in, bool out, int flag) /* Call the FLEX generated parser. In multi-threading mode the next */ /* instruction is included in an Enter/LeaveCriticalSection bracket. */ /*********************************************************************/ - //#if defined(THREAD) -#if defined(__WIN__) - EnterCriticalSection((LPCRITICAL_SECTION)&parsec); -#else // !__WIN__ pthread_mutex_lock(&parmut); -#endif // !__WIN__ -//#endif // THREAD rc = fmdflex(pdp); -//#if defined(THREAD) -#if defined(__WIN__) - LeaveCriticalSection((LPCRITICAL_SECTION)&parsec); -#else // !__WIN__ pthread_mutex_unlock(&parmut); -#endif // !__WIN__ -//#endif // THREAD if (trace) htrc("Done: in=%s out=%s rc=%d\n", SVP(pdp->InFmt), SVP(pdp->OutFmt), rc); diff --git a/storage/connect/plugutil.cpp b/storage/connect/plugutil.cpp index f0822526b98..e4bfd825932 100644 --- a/storage/connect/plugutil.cpp +++ b/storage/connect/plugutil.cpp @@ -2,11 +2,11 @@ /* */ /* PROGRAM NAME: PLUGUTIL */ /* ------------- */ -/* Version 2.9 */ +/* Version 3.0 */ /* */ /* COPYRIGHT: */ /* ---------- */ -/* (C) Copyright to the author Olivier BERTRAND 1993-2015 */ +/* (C) Copyright to the author Olivier BERTRAND 1993-2017 */ /* */ /* WHAT THIS PROGRAM DOES: */ /* ----------------------- */ @@ -76,6 +76,7 @@ #include "osutil.h" #include "global.h" +#include "plgdbsem.h" #if defined(NEWMSG) #include "rcmsg.h" #endif // NEWMSG @@ -132,12 +133,12 @@ void htrc(char const *fmt, ...) /* Return value is the pointer to the Global structure. */ /***********************************************************************/ PGLOBAL PlugInit(LPCSTR Language, uint worksize) - { - PGLOBAL g; +{ + PGLOBAL g; - if (trace > 1) - htrc("PlugInit: Language='%s'\n", - ((!Language) ? "Null" : (char*)Language)); + if (trace > 1) + htrc("PlugInit: Language='%s'\n", + ((!Language) ? "Null" : (char*)Language)); try { g = new GLOBAL; @@ -146,53 +147,54 @@ PGLOBAL PlugInit(LPCSTR Language, uint worksize) return NULL; } // end try/catch - //if (!(g = (PGLOBAL)malloc(sizeof(GLOBAL)))) { - // fprintf(stderr, MSG(GLOBAL_ERROR), (int)sizeof(GLOBAL)); - // return NULL; - // } else { - g->Sarea = NULL; - g->Createas = 0; - g->Alchecked = 0; - g->Mrr = 0; - g->Activityp = NULL; - g->Xchk = NULL; - g->N = 0; - g->More = 0; - strcpy(g->Message, ""); - - /*******************************************************************/ - /* Allocate the main work segment. */ - /*******************************************************************/ - if (worksize && !(g->Sarea = PlugAllocMem(g, worksize))) { - char errmsg[MAX_STR]; - sprintf(errmsg, MSG(WORK_AREA), g->Message); - strcpy(g->Message, errmsg); - g->Sarea_Size = 0; - } else - g->Sarea_Size = worksize; - - //} /* endif g */ - - g->jump_level = -1; /* New setting to allow recursive call of Plug */ - return(g); - } /* end of PlugInit */ + g->Sarea = NULL; + g->Createas = 0; + g->Alchecked = 0; + g->Mrr = 0; + g->Activityp = NULL; + g->Xchk = NULL; + g->N = 0; + g->More = 0; + strcpy(g->Message, ""); + + /*******************************************************************/ + /* Allocate the main work segment. */ + /*******************************************************************/ + if (worksize && !(g->Sarea = PlugAllocMem(g, worksize))) { + char errmsg[MAX_STR]; + sprintf(errmsg, MSG(WORK_AREA), g->Message); + strcpy(g->Message, errmsg); + g->Sarea_Size = 0; + } else + g->Sarea_Size = worksize; + + g->jump_level = -1; /* New setting to allow recursive call of Plug */ + return(g); +} /* end of PlugInit */ /***********************************************************************/ /* PlugExit: Terminate Plug operations. */ /***********************************************************************/ int PlugExit(PGLOBAL g) - { - int rc = 0; +{ + if (g) { + PDBUSER dup = PlgGetUser(g); + + if (dup) + free(dup); + + if (g->Sarea) { + if (trace) + htrc("Freeing Sarea size=%d\n", g->Sarea_Size); - if (!g) - return rc; + free(g->Sarea); + } // endif Sarea - if (g->Sarea) - free(g->Sarea); + delete g; + } // endif g - delete g; - return rc; - } /* end of PlugExit */ + return 0; +} // end of PlugExit /***********************************************************************/ /* Remove the file type from a file name. */ @@ -456,7 +458,7 @@ short GetLineLength(PGLOBAL g) /* Program for memory allocation of work and language areas. */ /***********************************************************************/ void *PlugAllocMem(PGLOBAL g, uint size) - { +{ void *areap; /* Pointer to allocated area */ /*********************************************************************/ @@ -465,16 +467,16 @@ void *PlugAllocMem(PGLOBAL g, uint size) if (!(areap = malloc(size))) sprintf(g->Message, MSG(MALLOC_ERROR), "malloc"); - if (trace > 1) { + if (trace) { if (areap) htrc("Memory of %u allocated at %p\n", size, areap); else htrc("PlugAllocMem: %s\n", g->Message); - } // endif trace + } // endif trace return (areap); - } /* end of PlugAllocMem */ +} // end of PlugAllocMem /***********************************************************************/ /* Program for SubSet initialization of memory pools. */ diff --git a/storage/connect/tabcol.cpp b/storage/connect/tabcol.cpp index 2740864a69b..5065d86ce6a 100644 --- a/storage/connect/tabcol.cpp +++ b/storage/connect/tabcol.cpp @@ -86,7 +86,7 @@ void XTAB::Printf(PGLOBAL g, FILE *f, uint n) PlugPutOut(g, f, TYPE_TDB, tp->To_Tdb, n + 2); } /* endfor tp */ - } /* end of Print */ + } /* end of Printf */ /***********************************************************************/ /* Make string output of XTAB contents. */ @@ -105,7 +105,7 @@ void XTAB::Prints(PGLOBAL, char *ps, uint z) n -= i; } // endif tp - } /* end of Print */ + } /* end of Prints */ /***********************************************************************/ @@ -149,7 +149,7 @@ void COLUMN::Printf(PGLOBAL g, FILE *f, uint n) PlugPutOut(g, f, TYPE_TABLE, To_Table, n + 2); PlugPutOut(g, f, TYPE_XOBJECT, To_Col, n + 2); - } /* end of Print */ + } /* end of Printf */ /***********************************************************************/ /* Make string output of COLUMN contents. */ @@ -166,4 +166,4 @@ void COLUMN::Prints(PGLOBAL, char *ps, uint z) strncpy(ps, buf, z); ps[z - 1] = '\0'; - } /* end of Print */ + } /* end of Prints */ diff --git a/storage/connect/tabdos.cpp b/storage/connect/tabdos.cpp index 468966e79d9..37e53c83d36 100644 --- a/storage/connect/tabdos.cpp +++ b/storage/connect/tabdos.cpp @@ -1309,7 +1309,7 @@ PBF TDBDOS::InitBlockFilter(PGLOBAL g, PFIL filp) } // endif !opm // if opm, pass thru - /* fall through */ + // fall through case OP_IN: if (filp->GetArgType(0) == TYPE_COLBLK && filp->GetArgType(1) == TYPE_ARRAY) { @@ -1645,8 +1645,8 @@ int TDBDOS::TestBlock(PGLOBAL g) /***********************************************************************/ int TDBDOS::MakeIndex(PGLOBAL g, PIXDEF pxdf, bool add) { - int k, n; - bool fixed, doit, sep, b = (pxdf != NULL); + int k, n, rc = RC_OK; + bool fixed, doit, sep, b = (pxdf != NULL); PCOL *keycols, colp; PIXDEF xdp, sxp = NULL; PKPDEF kdp; @@ -1690,95 +1690,105 @@ int TDBDOS::MakeIndex(PGLOBAL g, PIXDEF pxdf, bool add) } else if (!(pxdf = dfp->GetIndx())) return RC_INFO; // No index to make - // Allocate all columns that will be used by indexes. - // This must be done before opening the table so specific - // column initialization can be done (in particular by TDBVCT) - for (n = 0, xdp = pxdf; xdp; xdp = xdp->GetNext()) - for (kdp = xdp->GetToKeyParts(); kdp; kdp = kdp->GetNext()) { - if (!(colp = ColDB(g, kdp->GetName(), 0))) { - sprintf(g->Message, MSG(INDX_COL_NOTIN), kdp->GetName(), Name); - goto err; - } else if (colp->GetResultType() == TYPE_DECIM) { - sprintf(g->Message, "Decimal columns are not indexable yet"); - goto err; - } // endif Type - - colp->InitValue(g); - n = MY_MAX(n, xdp->GetNparts()); - } // endfor kdp - - keycols = (PCOL*)PlugSubAlloc(g, NULL, n * sizeof(PCOL)); - sep = dfp->GetBoolCatInfo("SepIndex", false); - - /*********************************************************************/ - /* Construct and save the defined indexes. */ - /*********************************************************************/ - for (xdp = pxdf; xdp; xdp = xdp->GetNext()) - if (!OpenDB(g)) { - if (xdp->IsAuto() && fixed) - // Auto increment key and fixed file: use an XXROW index - continue; // XXROW index doesn't need to be made - - // On Update, redo only indexes that are modified - doit = !To_SetCols; - n = 0; - - if (sxp) - xdp->SetID(sxp->GetID() + 1); - - for (kdp = xdp->GetToKeyParts(); kdp; kdp = kdp->GetNext()) { - // Check whether this column was updated - for (colp = To_SetCols; !doit && colp; colp = colp->GetNext()) - if (!stricmp(kdp->GetName(), colp->GetName())) - doit = true; - - keycols[n++] = ColDB(g, kdp->GetName(), 0); - } // endfor kdp - - // If no indexed columns were updated, don't remake the index - // if indexes are in separate files. - if (!doit && sep) - continue; - - k = xdp->GetNparts(); - - // Make the index and save it - if (dfp->Huge) - pxp = new(g) XHUGE; - else - pxp = new(g) XFILE; - - if (k == 1) // Simple index - x = new(g) XINDXS(this, xdp, pxp, keycols); - else // Multi-Column index - x = new(g) XINDEX(this, xdp, pxp, keycols); - - if (!x->Make(g, sxp)) { - // Retreive define values from the index - xdp->SetMaxSame(x->GetMaxSame()); -// xdp->SetSize(x->GetSize()); - - // store KXYCOL Mxs in KPARTDEF Mxsame - xdp->SetMxsame(x); + try { + // Allocate all columns that will be used by indexes. + // This must be done before opening the table so specific + // column initialization can be done (in particular by TDBVCT) + for (n = 0, xdp = pxdf; xdp; xdp = xdp->GetNext()) + for (kdp = xdp->GetToKeyParts(); kdp; kdp = kdp->GetNext()) { + if (!(colp = ColDB(g, kdp->GetName(), 0))) { + sprintf(g->Message, MSG(INDX_COL_NOTIN), kdp->GetName(), Name); + goto err; + } else if (colp->GetResultType() == TYPE_DECIM) { + sprintf(g->Message, "Decimal columns are not indexable yet"); + goto err; + } // endif Type + + colp->InitValue(g); + n = MY_MAX(n, xdp->GetNparts()); + } // endfor kdp + + keycols = (PCOL*)PlugSubAlloc(g, NULL, n * sizeof(PCOL)); + sep = dfp->GetBoolCatInfo("SepIndex", false); + + /*********************************************************************/ + /* Construct and save the defined indexes. */ + /*********************************************************************/ + for (xdp = pxdf; xdp; xdp = xdp->GetNext()) + if (!OpenDB(g)) { + if (xdp->IsAuto() && fixed) + // Auto increment key and fixed file: use an XXROW index + continue; // XXROW index doesn't need to be made + + // On Update, redo only indexes that are modified + doit = !To_SetCols; + n = 0; + + if (sxp) + xdp->SetID(sxp->GetID() + 1); + + for (kdp = xdp->GetToKeyParts(); kdp; kdp = kdp->GetNext()) { + // Check whether this column was updated + for (colp = To_SetCols; !doit && colp; colp = colp->GetNext()) + if (!stricmp(kdp->GetName(), colp->GetName())) + doit = true; + + keycols[n++] = ColDB(g, kdp->GetName(), 0); + } // endfor kdp + + // If no indexed columns were updated, don't remake the index + // if indexes are in separate files. + if (!doit && sep) + continue; + + k = xdp->GetNparts(); + + // Make the index and save it + if (dfp->Huge) + pxp = new(g) XHUGE; + else + pxp = new(g) XFILE; + + if (k == 1) // Simple index + x = new(g) XINDXS(this, xdp, pxp, keycols); + else // Multi-Column index + x = new(g) XINDEX(this, xdp, pxp, keycols); + + if (!x->Make(g, sxp)) { + // Retreive define values from the index + xdp->SetMaxSame(x->GetMaxSame()); + // xdp->SetSize(x->GetSize()); + + // store KXYCOL Mxs in KPARTDEF Mxsame + xdp->SetMxsame(x); #if defined(TRACE) - printf("Make done...\n"); + printf("Make done...\n"); #endif // TRACE -// if (x->GetSize() > 0) - sxp = xdp; + // if (x->GetSize() > 0) + sxp = xdp; - xdp->SetInvalid(false); - } else - goto err; + xdp->SetInvalid(false); + } else + goto err; - } else - return RC_INFO; // Error or Physical table does not exist + } else + return RC_INFO; // Error or Physical table does not exist + + } catch (int n) { + if (trace) + htrc("Exception %d: %s\n", n, g->Message); + rc = RC_FX; + } catch (const char *msg) { + strcpy(g->Message, msg); + rc = RC_FX; + } // end catch if (Use == USE_OPEN) CloseDB(g); - return RC_OK; + return rc; err: if (sxp) @@ -2725,7 +2735,7 @@ void DOSCOL::WriteColumn(PGLOBAL g) if (Value->GetBinValue(p, Long, Status)) { sprintf(g->Message, MSG(BIN_F_TOO_LONG), Name, Value->GetSize(), Long); - longjmp(g->jumper[g->jump_level], 31); + throw 31; } // endif } // end of WriteColumn @@ -2874,7 +2884,7 @@ bool DOSCOL::AddDistinctValue(PGLOBAL g) void DOSCOL::Printf(PGLOBAL g, FILE *f, uint n) { COLBLK::Printf(g, f, n); - } // end of Print + } // end of Printf /* ------------------------------------------------------------------- */ diff --git a/storage/connect/tabjson.cpp b/storage/connect/tabjson.cpp index 063115c7a60..a74be7eb699 100644 --- a/storage/connect/tabjson.cpp +++ b/storage/connect/tabjson.cpp @@ -41,12 +41,12 @@ /***********************************************************************/ #define MAXCOL 200 /* Default max column nb in result */ #define TYPE_UNKNOWN 12 /* Must be greater than other types */ -#define USE_G 1 /* Use recoverable memory if 1 */ /***********************************************************************/ /* External function. */ /***********************************************************************/ USETEMP UseTemp(void); +char *GetJsonNull(void); typedef struct _jncol { struct _jncol *Next; @@ -163,7 +163,6 @@ PQRYRES JSONColumns(PGLOBAL g, char *db, PTOS topt, bool info) tjnp->SetMode(MODE_READ); -#if USE_G // Allocate the parse work memory PGLOBAL G = (PGLOBAL)PlugSubAlloc(g, NULL, sizeof(GLOBAL)); memset(G, 0, sizeof(GLOBAL)); @@ -172,9 +171,6 @@ PQRYRES JSONColumns(PGLOBAL g, char *db, PTOS topt, bool info) PlugSubSet(G, G->Sarea, G->Sarea_Size); G->jump_level = 0; tjnp->SetG(G); -#else - tjnp->SetG(g); -#endif if (tjnp->OpenDB(g)) return NULL; @@ -478,7 +474,6 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) // Txfp must be set for TDBDOS tdbp = new(g) TDBJSN(this, txfp); -#if USE_G // Allocate the parse work memory PGLOBAL G = (PGLOBAL)PlugSubAlloc(g, NULL, sizeof(GLOBAL)); memset(G, 0, sizeof(GLOBAL)); @@ -487,9 +482,6 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) PlugSubSet(G, G->Sarea, G->Sarea_Size); G->jump_level = 0; ((TDBJSN*)tdbp)->G = G; -#else - ((TDBJSN*)tdbp)->G = g; -#endif } else { if (Zipped) { #if defined(ZIP_SUPPORT) @@ -762,10 +754,8 @@ int TDBJSN::ReadDB(PGLOBAL g) // Deferred reading failed return rc; -#if USE_G // Recover the memory used for parsing PlugSubSet(G, G->Sarea, G->Sarea_Size); -#endif if ((Row = ParseJson(G, To_Line, strlen(To_Line), &Pretty, &Comma))) { Row = FindRow(g); @@ -774,9 +764,7 @@ int TDBJSN::ReadDB(PGLOBAL g) M = 1; rc = RC_OK; } else if (Pretty != 1 || strcmp(To_Line, "]")) { -#if USE_G strcpy(g->Message, G->Message); -#endif rc = RC_FX; } else rc = RC_EF; @@ -882,9 +870,7 @@ int TDBJSN::WriteDB(PGLOBAL g) { int rc = TDBDOS::WriteDB(g); -#if USE_G PlugSubSet(G, G->Sarea, G->Sarea_Size); -#endif Row->Clear(); return rc; } // end of WriteDB @@ -1228,7 +1214,7 @@ void JSONCOL::SetJsonValue(PGLOBAL g, PVAL vp, PJVAL val, int n) case TYPE_INTG: case TYPE_BINT: case TYPE_DBL: - case TYPE_DATE: + case TYPE_DTM: vp->SetValue_pval(val->GetValue()); break; case TYPE_BOOL: @@ -1390,9 +1376,12 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) for (i = 0; i < ars; i++) { jvrp = arp->GetValue(i); - do { - if (n < Nod - 1 && jvrp->GetJson()) { - Tjp->NextSame = nextsame; + if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) do { + if (jvrp->IsNull()) { + jvrp->Value = AllocateValue(g, GetJsonNull(), TYPE_STRING); + jvp = jvrp; + } else if (n < Nod - 1 && jvrp->GetJson()) { + Tjp->NextSame = nextsame; jval.SetValue(GetColumnValue(g, jvrp->GetJson(), n + 1)); jvp = &jval; } else @@ -1404,8 +1393,9 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) } else SetJsonValue(g, MulVal, jvp, n); - if (!MulVal->IsZero()) { - switch (op) { +// if (!MulVal->IsZero()) { + if (!MulVal->IsNull()) { + switch (op) { case OP_CNC: if (Nodes[n].CncVal) { val[0] = Nodes[n].CncVal; diff --git a/storage/connect/table.cpp b/storage/connect/table.cpp index d39837a7b5a..c3a02ff42b9 100644 --- a/storage/connect/table.cpp +++ b/storage/connect/table.cpp @@ -324,7 +324,7 @@ void TDB::Printf(PGLOBAL g, FILE *f, uint n) void TDB::Prints(PGLOBAL, char *ps, uint) { sprintf(ps, "R%d.%s", Tdb_No, Name); - } // end of Print + } // end of Prints /* -------------------------- class TDBASE --------------------------- */ diff --git a/storage/connect/tabodbc.cpp b/storage/connect/tabodbc.cpp index 34711d584f1..8ffa234ba5c 100644 --- a/storage/connect/tabodbc.cpp +++ b/storage/connect/tabodbc.cpp @@ -273,7 +273,7 @@ PCSZ TDBODBC::GetFile(PGLOBAL g) /***********************************************************************/ /* Set DBQ and get the new file name into the connect string. */ /***********************************************************************/ -void TDBODBC::SetFile(PGLOBAL g, PSZ fn) +void TDBODBC::SetFile(PGLOBAL g, PCSZ fn) { if (MulConn) { int n = strlen(MulConn) + strlen(fn) - 1; @@ -289,7 +289,7 @@ void TDBODBC::SetFile(PGLOBAL g, PSZ fn) sprintf(Connect, MulConn, fn); } // endif MultConn - DBQ = fn; + DBQ = PlugDup(g, fn); } // end of SetFile /***********************************************************************/ diff --git a/storage/connect/tabodbc.h b/storage/connect/tabodbc.h index 0ca88b60858..0699da54e7f 100644 --- a/storage/connect/tabodbc.h +++ b/storage/connect/tabodbc.h @@ -71,7 +71,7 @@ class TDBODBC : public TDBEXT { virtual PTDB Clone(PTABS t); virtual bool SetRecpos(PGLOBAL g, int recpos); virtual PCSZ GetFile(PGLOBAL g); - virtual void SetFile(PGLOBAL g, PSZ fn); + virtual void SetFile(PGLOBAL g, PCSZ fn); virtual void ResetSize(void); virtual PCSZ GetServer(void) {return "ODBC";} virtual int Indexable(void) {return 2;} diff --git a/storage/connect/tabvir.cpp b/storage/connect/tabvir.cpp index 84b3dd1787b..c78a8f531f6 100644 --- a/storage/connect/tabvir.cpp +++ b/storage/connect/tabvir.cpp @@ -289,7 +289,7 @@ void VIRCOL::ReadColumn(PGLOBAL g) { // This should never be called sprintf(g->Message, "ReadColumn: Column %s is not virtual", Name); - throw TYPE_COLBLK; + throw (int)TYPE_COLBLK; } // end of ReadColumn /* ---------------------------TDBVICL class -------------------------- */ diff --git a/storage/connect/tabxml.cpp b/storage/connect/tabxml.cpp index 80d4395058e..c09386451ff 100644 --- a/storage/connect/tabxml.cpp +++ b/storage/connect/tabxml.cpp @@ -1319,7 +1319,7 @@ void TDBXML::CloseDB(PGLOBAL g) Docp->CloseDoc(g, To_Xb); // This causes a crash in Diagnostics_area::set_error_status -// throw TYPE_AM_XML; +// throw (int)TYPE_AM_XML; } // endif DumpDoc } // endif Changed @@ -1642,7 +1642,7 @@ void XMLCOL::ReadColumn(PGLOBAL g) if (ValNode->GetType() != XML_ELEMENT_NODE && ValNode->GetType() != XML_ATTRIBUTE_NODE) { sprintf(g->Message, MSG(BAD_VALNODE), ValNode->GetType(), Name); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endif type // Get the Xname value from the XML file @@ -1653,7 +1653,7 @@ void XMLCOL::ReadColumn(PGLOBAL g) PushWarning(g, Tdbp); break; default: - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endswitch Value->SetValue_psz(Valbuf); @@ -1704,7 +1704,7 @@ void XMLCOL::WriteColumn(PGLOBAL g) /* For columns having an Xpath, the Clist must be updated. */ /*********************************************************************/ if (Tdbp->CheckRow(g, Nod || Tdbp->Colname)) - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; /*********************************************************************/ /* Null values are represented by no node. */ @@ -1776,7 +1776,7 @@ void XMLCOL::WriteColumn(PGLOBAL g) if (ColNode == NULL) { strcpy(g->Message, MSG(COL_ALLOC_ERR)); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endif ColNode } // endif ColNode @@ -1795,7 +1795,7 @@ void XMLCOL::WriteColumn(PGLOBAL g) if (ValNode == NULL && AttNode == NULL) { strcpy(g->Message, MSG(VAL_ALLOC_ERR)); - longjmp(g->jumper[g->jump_level], TYPE_AM_XML); + throw (int)TYPE_AM_XML; } // endif ValNode /*********************************************************************/ @@ -1805,7 +1805,7 @@ void XMLCOL::WriteColumn(PGLOBAL g) if (strlen(p) > (unsigned)Long) { sprintf(g->Message, MSG(VALUE_TOO_LONG), p, Name, Long); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } else strcpy(Valbuf, p); @@ -1855,7 +1855,7 @@ void XMULCOL::ReadColumn(PGLOBAL g) if (ValNode->GetType() != XML_ELEMENT_NODE && ValNode->GetType() != XML_ATTRIBUTE_NODE) { sprintf(g->Message, MSG(BAD_VALNODE), ValNode->GetType(), Name); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endif type // Get the Xname value from the XML file @@ -1866,7 +1866,7 @@ void XMULCOL::ReadColumn(PGLOBAL g) PushWarning(g, Tdbp); break; default: - longjmp(g->jumper[g->jump_level], TYPE_AM_XML); + throw (int)TYPE_AM_XML; } // endswitch if (!b) { @@ -1941,7 +1941,7 @@ void XMULCOL::WriteColumn(PGLOBAL g) /* For columns having an Xpath, the Clist must be updated. */ /*********************************************************************/ if (Tdbp->CheckRow(g, Nod)) - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; /*********************************************************************/ /* Find the column and value nodes to update or insert. */ @@ -1990,7 +1990,7 @@ void XMULCOL::WriteColumn(PGLOBAL g) if (len > 1 && !Tdbp->Xpand) { sprintf(g->Message, MSG(BAD_VAL_UPDATE), Name); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } else ValNode = Nlx->GetItem(g, Tdbp->Nsub, Vxnp); @@ -2032,7 +2032,7 @@ void XMULCOL::WriteColumn(PGLOBAL g) if (ColNode == NULL) { strcpy(g->Message, MSG(COL_ALLOC_ERR)); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endif ColNode } // endif ColNode @@ -2051,8 +2051,8 @@ void XMULCOL::WriteColumn(PGLOBAL g) if (ValNode == NULL && AttNode == NULL) { strcpy(g->Message, MSG(VAL_ALLOC_ERR)); - longjmp(g->jumper[g->jump_level], TYPE_AM_XML); - } // endif ValNode + throw (int)TYPE_AM_XML; + } // endif ValNode /*********************************************************************/ /* Get the string representation of Value according to column type. */ @@ -2061,7 +2061,7 @@ void XMULCOL::WriteColumn(PGLOBAL g) if (strlen(p) > (unsigned)Long) { sprintf(g->Message, MSG(VALUE_TOO_LONG), p, Name, Long); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } else strcpy(Valbuf, p); @@ -2093,7 +2093,7 @@ void XPOSCOL::ReadColumn(PGLOBAL g) if (Tdbp->Clist == NULL) { strcpy(g->Message, MSG(MIS_TAG_LIST)); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endif Clist if ((ValNode = Tdbp->Clist->GetItem(g, Rank, Vxnp))) { @@ -2105,7 +2105,7 @@ void XPOSCOL::ReadColumn(PGLOBAL g) PushWarning(g, Tdbp); break; default: - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endswitch Value->SetValue_psz(Valbuf); @@ -2156,14 +2156,14 @@ void XPOSCOL::WriteColumn(PGLOBAL g) /* For all columns the Clist must be updated. */ /*********************************************************************/ if (Tdbp->CheckRow(g, true)) - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; /*********************************************************************/ /* Find the column and value nodes to update or insert. */ /*********************************************************************/ if (Tdbp->Clist == NULL) { strcpy(g->Message, MSG(MIS_TAG_LIST)); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } // endif Clist n = Tdbp->Clist->GetLength(); @@ -2188,7 +2188,7 @@ void XPOSCOL::WriteColumn(PGLOBAL g) if (strlen(p) > (unsigned)Long) { sprintf(g->Message, MSG(VALUE_TOO_LONG), p, Name, Long); - throw TYPE_AM_XML; + throw (int)TYPE_AM_XML; } else strcpy(Valbuf, p); diff --git a/storage/connect/user_connect.cc b/storage/connect/user_connect.cc index ca3557666a4..9fe2c75d530 100644 --- a/storage/connect/user_connect.cc +++ b/storage/connect/user_connect.cc @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2015 +/* Copyright (C) MariaDB Corporation 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 @@ -24,7 +24,7 @@ that is a connection with its personnal memory allocation. @note - + Author Olivier Bertrand */ /****************************************************************************/ @@ -47,6 +47,8 @@ #include "user_connect.h" #include "mycat.h" +extern pthread_mutex_t usrmut; + /****************************************************************************/ /* Initialize the user_connect static member. */ /****************************************************************************/ @@ -111,7 +113,10 @@ bool user_connect::user_init() int rc= PlugExit(g); g= NULL; - free(dup); + + if (dup) + free(dup); + return true; } // endif g-> @@ -122,15 +127,19 @@ bool user_connect::user_init() strcpy(ap->Ap_Name, "CONNECT"); g->Activityp= ap; g->Activityp->Aptr= dup; - next= to_users; + + pthread_mutex_lock(&usrmut); + next= to_users; to_users= this; if (next) next->previous= this; - last_query_id= thdp->query_id; count= 1; - return false; + pthread_mutex_unlock(&usrmut); + + last_query_id = thdp->query_id; + return false; } // end of user_init @@ -144,18 +153,22 @@ void user_connect::SetHandler(ha_connect *hc) /****************************************************************************/ /* Check whether we begin a new query and if so cleanup the previous one. */ /****************************************************************************/ -bool user_connect::CheckCleanup(void) +bool user_connect::CheckCleanup(bool force) { - if (thdp->query_id > last_query_id) { + if (thdp->query_id > last_query_id || force) { uint worksize= GetWorkSize(); PlugCleanup(g, true); if (g->Sarea_Size != worksize) { - if (g->Sarea) - free(g->Sarea); + if (g->Sarea) { + if (trace) + htrc("CheckCleanup: Free Sarea %d\n", g->Sarea_Size); + + free(g->Sarea); + } // endif Size - // Check whether the work area size was changed + // Check whether the work area could be allocated if (!(g->Sarea = PlugAllocMem(g, worksize))) { g->Sarea = PlugAllocMem(g, g->Sarea_Size); SetWorkSize(g->Sarea_Size); // Was too big @@ -171,7 +184,7 @@ bool user_connect::CheckCleanup(void) g->Mrr = 0; last_query_id= thdp->query_id; - if (trace) + if (trace && !force) printf("=====> Begin new query %llu\n", last_query_id); return true; diff --git a/storage/connect/user_connect.h b/storage/connect/user_connect.h index a883eb85934..983d9adc478 100644 --- a/storage/connect/user_connect.h +++ b/storage/connect/user_connect.h @@ -1,4 +1,4 @@ -/* Copyright (C) Olivier Bertrand 2004 - 2011 +/* Copyright (C) MariaDB Corporation 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 @@ -19,6 +19,7 @@ Declaration of the user_connect class. @note + Author Olivier Bertrand @see /sql/handler.h and /storage/connect/user_connect.cc @@ -53,7 +54,7 @@ public: // Implementation bool user_init(); void SetHandler(ha_connect *hc); - bool CheckCleanup(void); + bool CheckCleanup(bool force = false); bool CheckQueryID(void) {return thdp->query_id > last_query_id;} bool CheckQuery(query_id_t vid) {return last_query_id > vid;} diff --git a/storage/connect/value.cpp b/storage/connect/value.cpp index b6c63bdadd3..8316e7a5ff0 100644 --- a/storage/connect/value.cpp +++ b/storage/connect/value.cpp @@ -118,7 +118,8 @@ ulonglong CharToNumber(const char *p, int n, ulonglong maxval, maxval++; if (minus) *minus = true; } // endif Unsigned - /* fall through */ + + // Fall through case '+': p++; break; @@ -571,9 +572,9 @@ void VALUE::Printf(PGLOBAL g, FILE *f, uint n) if (Null) fprintf(f, "%s\n", m); else - fprintf(f, "%s%s%s", GetCharString(buf), "\n", m); + fprintf(f, "%s%s\n", m, GetCharString(buf)); -} /* end of Print */ +} /* end of Printf */ /***********************************************************************/ /* Make string output of an object value. */ @@ -588,7 +589,7 @@ void VALUE::Prints(PGLOBAL g, char *ps, uint z) p = GetCharString(buf); strncpy(ps, p, z); -} // end of Print +} // end of Prints /* -------------------------- Class TYPVAL ---------------------------- */ @@ -1349,7 +1350,7 @@ bool TYPVAL::SetValue_pval(PVAL valp, bool chktype) char buf[64]; - if (!(Null = valp->IsNull() && Nullable)) + if (!(Null = (valp->IsNull() && Nullable))) strncpy(Strp, valp->GetCharString(buf), Len); else Reset(); @@ -1451,7 +1452,7 @@ void TYPVAL::SetValue(uint n) if (k > Len) { sprintf(g->Message, MSG(VALSTR_TOO_LONG), buf, Len); - longjmp(g->jumper[g->jump_level], 138); + throw 138; } else SetValue_psz(buf); @@ -1505,7 +1506,7 @@ void TYPVAL::SetValue(ulonglong n) if (k > Len) { sprintf(g->Message, MSG(VALSTR_TOO_LONG), buf, Len); - longjmp(g->jumper[g->jump_level], 138); + throw 138; } else SetValue_psz(buf); @@ -1655,32 +1656,36 @@ bool TYPVAL::Compute(PGLOBAL g, PVAL *vp, int np, OPVAL op) int i; for (i = 0; i < np; i++) - p[i] = vp[i]->GetCharString(val[i]); + p[i] = vp[i]->IsNull() ? NULL : vp[i]->GetCharString(val[i]); - switch (op) { - case OP_CNC: - assert(np == 1 || np == 2); + if (p[i-1]) { + switch (op) { + case OP_CNC: + assert(np == 1 || np == 2); - if (np == 2) - SetValue_psz(p[0]); + if (np == 2) + SetValue_psz(p[0]); - if ((i = Len - (signed)strlen(Strp)) > 0) - strncat(Strp, p[np - 1], i); + if ((i = Len - (signed)strlen(Strp)) > 0) + strncat(Strp, p[np - 1], i); - break; - case OP_MIN: - assert(np == 2); - SetValue_psz((strcmp(p[0], p[1]) < 0) ? p[0] : p[1]); - break; - case OP_MAX: - assert(np == 2); - SetValue_psz((strcmp(p[0], p[1]) > 0) ? p[0] : p[1]); - break; - default: -// sprintf(g->Message, MSG(BAD_EXP_OPER), op); - strcpy(g->Message, "Function not supported"); - return true; - } // endswitch op + break; + case OP_MIN: + assert(np == 2); + SetValue_psz((strcmp(p[0], p[1]) < 0) ? p[0] : p[1]); + break; + case OP_MAX: + assert(np == 2); + SetValue_psz((strcmp(p[0], p[1]) > 0) ? p[0] : p[1]); + break; + default: + // sprintf(g->Message, MSG(BAD_EXP_OPER), op); + strcpy(g->Message, "Function not supported"); + return true; + } // endswitch op + + Null = false; + } // endif p[i] return false; } // end of Compute @@ -1719,8 +1724,12 @@ void TYPVAL::Prints(PGLOBAL g, char *ps, uint z) else strcat(strncat(strncpy(ps, "\"", z), Strp, z-2), "\""); -} // end of Print +} // end of Prints + +/* -------------------------- Class DECIMAL -------------------------- */ +/***********************************************************************/ +/* DECIMAL public constructor from a constant string. */ /* -------------------------- Class DECIMAL -------------------------- */ /***********************************************************************/ @@ -2562,7 +2571,7 @@ bool DTVAL::SetValue_pval(PVAL valp, bool chktype) } else if (valp->GetType() == TYPE_BIGINT && !(valp->GetBigintValue() % 1000)) { // Assuming that this timestamp is in milliseconds - Tval = valp->GetBigintValue() / 1000; + Tval = (int)(valp->GetBigintValue() / 1000); } else Tval = valp->GetIntValue(); diff --git a/storage/connect/value.h b/storage/connect/value.h index 2754c761815..f771d33dc52 100644 --- a/storage/connect/value.h +++ b/storage/connect/value.h @@ -90,8 +90,8 @@ class DllExport VALUE : public BLOCK { virtual double GetFloatValue(void) = 0; virtual void *GetTo_Val(void) = 0; virtual void SetPrec(int prec) {Prec = prec;} - bool IsNull(void) {return Null;} - void SetNull(bool b) {Null = b;} + bool IsNull(void) {return (Nullable && Null);} + void SetNull(bool b) {Null = (Nullable ? b : false);} bool GetNullable(void) {return Nullable;} void SetNullable(bool b) {Nullable = b;} int GetType(void) {return Type;} diff --git a/storage/connect/xindex.cpp b/storage/connect/xindex.cpp index 3e4db8080ae..30dce3b7fef 100755 --- a/storage/connect/xindex.cpp +++ b/storage/connect/xindex.cpp @@ -188,7 +188,7 @@ void XXBASE::Printf(PGLOBAL, FILE *f, uint n) memset(m, ' ', n); // Make margin string m[n] = '\0'; fprintf(f, "%sXINDEX: Tbxp=%p Num=%d\n", m, Tbxp, Num_K); - } // end of Print + } // end of Printf /***********************************************************************/ /* Make string output of XINDEX contents. */ @@ -197,7 +197,7 @@ void XXBASE::Prints(PGLOBAL, char *ps, uint z) { *ps = '\0'; strncat(ps, "Xindex", z); - } // end of Print + } // end of Prints /* -------------------------- XINDEX Class --------------------------- */ @@ -3008,7 +3008,8 @@ KXYCOL::KXYCOL(PKXBASE kp) : To_Keys(Keys.Memp), /***********************************************************************/ bool KXYCOL::Init(PGLOBAL g, PCOL colp, int n, bool sm, int kln) { - int len = colp->GetLength(), prec = colp->GetScale(); + int len = colp->GetLength(), prec = colp->GetScale(); + bool un = colp->IsUnsigned(); // Currently no indexing on NULL columns if (colp->IsNullable() && kln) { @@ -3028,7 +3029,7 @@ bool KXYCOL::Init(PGLOBAL g, PCOL colp, int n, bool sm, int kln) // Allocate the Value object used when moving items Type = colp->GetResultType(); - if (!(Valp = AllocateValue(g, Type, len, prec, colp->IsUnsigned()))) + if (!(Valp = AllocateValue(g, Type, len, prec, un))) return true; Klen = Valp->GetClen(); @@ -3044,7 +3045,7 @@ bool KXYCOL::Init(PGLOBAL g, PCOL colp, int n, bool sm, int kln) // Currently we set it to true to be compatible with QRY blocks, // and the one before last is to enable length/type checking, set to // true if not a prefix key. - Kblp = AllocValBlock(g, To_Keys, Type, n, len, prec, !Prefix, true); + Kblp = AllocValBlock(g, To_Keys, Type, n, len, prec, !Prefix, true, un); Asc = sm; // Sort mode: Asc=true Desc=false Ndf = n; @@ -3064,7 +3065,8 @@ bool KXYCOL::Init(PGLOBAL g, PCOL colp, int n, bool sm, int kln) /***********************************************************************/ BYTE* KXYCOL::MapInit(PGLOBAL g, PCOL colp, int *n, BYTE *m) { - int len = colp->GetLength(), prec = colp->GetScale(); + int len = colp->GetLength(), prec = colp->GetScale(); + bool un = colp->IsUnsigned(); if (n[3] && colp->GetLength() > n[3] && colp->GetResultType() == TYPE_STRING) { @@ -3079,7 +3081,7 @@ BYTE* KXYCOL::MapInit(PGLOBAL g, PCOL colp, int *n, BYTE *m) this, colp, Type, n[0], len, m); // Allocate the Value object used when moving items - Valp = AllocateValue(g, Type, len, prec, colp->IsUnsigned()); + Valp = AllocateValue(g, Type, len, prec, un); Klen = Valp->GetClen(); if (n[2]) { @@ -3088,7 +3090,7 @@ BYTE* KXYCOL::MapInit(PGLOBAL g, PCOL colp, int *n, BYTE *m) Bkeys.Sub = true; // Allocate the Valblk containing initial block key values - Blkp = AllocValBlock(g, To_Bkeys, Type, n[2], len, prec, true, true); + Blkp = AllocValBlock(g, To_Bkeys, Type, n[2], len, prec, true, true, un); } // endif nb Keys.Size = n[0] * Klen; @@ -3099,7 +3101,7 @@ BYTE* KXYCOL::MapInit(PGLOBAL g, PCOL colp, int *n, BYTE *m) // by blanks (if true) or keep the zero ending char (if false). // Currently we set it to true to be compatible with QRY blocks, // and last one to enable type checking (no conversion). - Kblp = AllocValBlock(g, To_Keys, Type, n[0], len, prec, !Prefix, true); + Kblp = AllocValBlock(g, To_Keys, Type, n[0], len, prec, !Prefix, true, un); if (n[1]) { Koff.Size = n[1] * sizeof(int); diff --git a/storage/connect/xobject.cpp b/storage/connect/xobject.cpp index 205edc12d0c..02d3e974dcc 100644 --- a/storage/connect/xobject.cpp +++ b/storage/connect/xobject.cpp @@ -84,7 +84,7 @@ double XOBJECT::GetFloatValue(void) CONSTANT::CONSTANT(PGLOBAL g, void *value, short type) { if (!(Value = AllocateValue(g, value, (int)type))) - throw TYPE_CONST; + throw (int)TYPE_CONST; Constant = true; } // end of CONSTANT constructor @@ -95,7 +95,7 @@ CONSTANT::CONSTANT(PGLOBAL g, void *value, short type) CONSTANT::CONSTANT(PGLOBAL g, int n) { if (!(Value = AllocateValue(g, &n, TYPE_INT))) - throw TYPE_CONST; + throw (int)TYPE_CONST; Constant = true; } // end of CONSTANT constructor @@ -117,7 +117,7 @@ void CONSTANT::Convert(PGLOBAL g, int newtype) { if (Value->GetType() != newtype) if (!(Value = AllocateValue(g, Value, newtype))) - throw TYPE_CONST; + throw (int)TYPE_CONST; } // end of Convert @@ -176,7 +176,7 @@ bool CONSTANT::Rephrase(PGLOBAL g, PSZ work) void CONSTANT::Printf(PGLOBAL g, FILE *f, uint n) { Value->Printf(g, f, n); - } /* end of Print */ + } /* end of Printf */ /***********************************************************************/ /* Make string output of a constant object. */ @@ -184,7 +184,7 @@ void CONSTANT::Printf(PGLOBAL g, FILE *f, uint n) void CONSTANT::Prints(PGLOBAL g, char *ps, uint z) { Value->Prints(g, ps, z); - } /* end of Print */ + } /* end of Prints */ /* -------------------------- Class STRING --------------------------- */ -- cgit v1.2.1 From 04ae1207edec4cac80d7206377ae22a8447aa08f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Wed, 2 Aug 2017 12:11:06 +0300 Subject: 5.6.36-82.1 --- storage/xtradb/buf/buf0flu.cc | 17 +++++++++++++++-- storage/xtradb/include/univ.i | 2 +- storage/xtradb/log/log0log.cc | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) (limited to 'storage') diff --git a/storage/xtradb/buf/buf0flu.cc b/storage/xtradb/buf/buf0flu.cc index 36e24fb3a1b..d401439a98f 100644 --- a/storage/xtradb/buf/buf0flu.cc +++ b/storage/xtradb/buf/buf0flu.cc @@ -2789,7 +2789,10 @@ DECLARE_THREAD(buf_flush_page_cleaner_thread)( when SRV_SHUTDOWN_CLEANUP is set other threads like the master and the purge threads may be working as well. We start flushing the buffer pool but can't be sure that no new pages are being - dirtied until we enter SRV_SHUTDOWN_FLUSH_PHASE phase. */ + dirtied until we enter SRV_SHUTDOWN_FLUSH_PHASE phase. Because + the LRU manager thread is also flushing at SRV_SHUTDOWN_CLEANUP + but not SRV_SHUTDOWN_FLUSH_PHASE, we only leave the + SRV_SHUTDOWN_CLEANUP loop when the LRU manager quits. */ do { n_flushed = page_cleaner_do_flush_batch(PCT_IO(100), LSN_MAX); @@ -2798,7 +2801,10 @@ DECLARE_THREAD(buf_flush_page_cleaner_thread)( if (n_flushed == 0) { os_thread_sleep(100000); } - } while (srv_shutdown_state == SRV_SHUTDOWN_CLEANUP); + + os_rmb; + } while (srv_shutdown_state == SRV_SHUTDOWN_CLEANUP + || buf_lru_manager_is_active); /* At this point all threads including the master and the purge thread must have been suspended. */ @@ -2815,6 +2821,11 @@ DECLARE_THREAD(buf_flush_page_cleaner_thread)( buf_flush_wait_batch_end(NULL, BUF_FLUSH_LIST); buf_flush_wait_LRU_batch_end(); +#ifdef UNIV_DEBUG + os_rmb; + ut_ad(!buf_lru_manager_is_active); +#endif + bool success; do { @@ -2877,6 +2888,7 @@ DECLARE_THREAD(buf_flush_lru_manager_thread)( #endif /* UNIV_DEBUG_THREAD_CREATION */ buf_lru_manager_is_active = true; + os_wmb; /* On server shutdown, the LRU manager thread runs through cleanup phase to provide free pages for the master and purge threads. */ @@ -2895,6 +2907,7 @@ DECLARE_THREAD(buf_flush_lru_manager_thread)( } buf_lru_manager_is_active = false; + os_wmb; /* We count the number of threads in os_thread_exit(). A created thread should always use that to exit and not use return() to exit. */ diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i index b4ad030a565..beaef2a2272 100644 --- a/storage/xtradb/include/univ.i +++ b/storage/xtradb/include/univ.i @@ -47,7 +47,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_BUGFIX MYSQL_VERSION_PATCH #ifndef PERCONA_INNODB_VERSION -#define PERCONA_INNODB_VERSION 82.0 +#define PERCONA_INNODB_VERSION 82.1 #endif /* Enable UNIV_LOG_ARCHIVE in XtraDB */ diff --git a/storage/xtradb/log/log0log.cc b/storage/xtradb/log/log0log.cc index f73d5b458d1..7be7b2c3c5a 100644 --- a/storage/xtradb/log/log0log.cc +++ b/storage/xtradb/log/log0log.cc @@ -3499,6 +3499,7 @@ loop: before proceeding further. */ srv_shutdown_state = SRV_SHUTDOWN_FLUSH_PHASE; count = 0; + os_rmb; while (buf_page_cleaner_is_active || buf_lru_manager_is_active) { if (srv_print_verbose_log && count == 0) { ib_logf(IB_LOG_LEVEL_INFO, @@ -3510,6 +3511,7 @@ loop: if (count > 600) { count = 0; } + os_rmb; } mutex_enter(&log_sys->mutex); -- cgit v1.2.1 From 8b019f87dd51b1d2755655d2f136d5429fc47e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 3 Aug 2017 08:29:36 +0300 Subject: MDEV-11939: innochecksum mistakes a file for an encrypted one (page 0 invalid) Always read full page 0 to determine does tablespace contain encryption metadata. Tablespaces that are page compressed or page compressed and encrypted do not compare checksum as it does not exists. For encrypted tables use checksum verification written for encrypted tables and normal tables use normal method. buf_page_is_checksum_valid_crc32 buf_page_is_checksum_valid_innodb buf_page_is_checksum_valid_none Add Innochecksum logging to file buf_page_is_corrupted Remove ib_logf and page_warn_strict_checksum calls in innochecksum compilation. Add innochecksum logging to file. fil0crypt.cc fil0crypt.h Modify to be able to use in innochecksum compilation and move fil_space_verify_crypt_checksum to end of the file. Add innochecksum logging to file. univ.i Add innochecksum strict_verify, log_file and cur_page_num variables as extern. page_zip_verify_checksum Add innochecksum logging to file. innochecksum.cc Lot of changes most notable able to read encryption metadata from page 0 of the tablespace. Added test case where we corrupt intentionally FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION (encryption key version) FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION+4 (post encryption checksum) FIL_DATA+10 (data) --- storage/innobase/buf/buf0buf.cc | 179 +++++++++++++++++-- storage/innobase/buf/buf0checksum.cc | 3 - storage/innobase/fil/fil0crypt.cc | 318 +++++++++++++++++++--------------- storage/innobase/include/buf0buf.h | 12 ++ storage/innobase/include/fil0crypt.h | 13 ++ storage/innobase/include/fil0fil.h | 8 +- storage/innobase/include/mach0data.ic | 4 +- storage/innobase/include/univ.i | 6 + storage/innobase/page/page0zip.cc | 41 ++++- storage/xtradb/fil/fil0crypt.cc | 313 ++++++++++++++++++--------------- 10 files changed, 586 insertions(+), 311 deletions(-) (limited to 'storage') diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index 334b2fbddb5..50d067b3f85 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -31,12 +31,16 @@ The database buffer buf_pool Created 11/5/1995 Heikki Tuuri *******************************************************/ +#include "univ.i" +#include "mach0data.h" #include "buf0buf.h" +#include #ifdef UNIV_NONINL #include "buf0buf.ic" #endif +#ifndef UNIV_INNOCHECKSUM #include "mem0mem.h" #include "btr0btr.h" #include "fil0fil.h" @@ -52,13 +56,15 @@ Created 11/5/1995 Heikki Tuuri #include "srv0srv.h" #include "dict0dict.h" #include "log0recv.h" -#include "page0zip.h" #include "srv0mon.h" -#include "buf0checksum.h" #ifdef HAVE_LIBNUMA #include #include #endif // HAVE_LIBNUMA +#endif /* !UNIV_INNOCHECKSUM */ +#include "page0zip.h" +#include "buf0checksum.h" +#ifndef UNIV_INNOCHECKSUM #include "fil0pagecompress.h" #include "ha_prototypes.h" #include "ut0byte.h" @@ -528,6 +534,7 @@ buf_block_alloc( return(block); } #endif /* !UNIV_HOTBACKUP */ +#endif /* !UNIV_INNOCHECKSUM */ /** Check if a page is all zeroes. @param[in] read_buf database page @@ -561,6 +568,17 @@ buf_page_is_checksum_valid_crc32( { ib_uint32_t crc32 = buf_calc_page_crc32(read_buf); +#ifdef UNIV_INNOCHECKSUM + if (log_file + && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { + fprintf(log_file, "page::%lu;" + " crc32 calculated = %u;" + " recorded checksum field1 = %lu recorded" + " checksum field2 =%lu\n", cur_page_num, + crc32, checksum_field1, checksum_field2); + } +#endif /* UNIV_INNOCHECKSUM */ + if (!(checksum_field1 == crc32 && checksum_field2 == crc32)) { DBUG_PRINT("buf_checksum", ("Page checksum crc32 not valid field1 " ULINTPF @@ -595,12 +613,45 @@ buf_page_is_checksum_valid_innodb( 2. Newer InnoDB versions store the old formula checksum (buf_calc_page_old_checksum()). */ + ulint old_checksum = buf_calc_page_old_checksum(read_buf); + ulint new_checksum = buf_calc_page_new_checksum(read_buf); + +#ifdef UNIV_INNOCHECKSUM + if (log_file + && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_INNODB) { + fprintf(log_file, "page::%lu;" + " old style: calculated =" + " %lu; recorded = %lu\n", + cur_page_num, old_checksum, + checksum_field2); + fprintf(log_file, "page::%lu;" + " new style: calculated =" + " %lu; crc32 = %u; recorded = %lu\n", + cur_page_num, new_checksum, + buf_calc_page_crc32(read_buf), checksum_field1); + } + + if (log_file + && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { + fprintf(log_file, "page::%lu;" + " old style: calculated =" + " %lu; recorded checksum = %lu\n", + cur_page_num, old_checksum, + checksum_field2); + fprintf(log_file, "page::%lu;" + " new style: calculated =" + " %lu; recorded checksum = %lu\n", + cur_page_num, new_checksum, + checksum_field1); + } +#endif /* UNIV_INNOCHECKSUM */ + if (checksum_field2 != mach_read_from_4(read_buf + FIL_PAGE_LSN) - && checksum_field2 != buf_calc_page_old_checksum(read_buf)) { + && checksum_field2 != old_checksum) { DBUG_PRINT("buf_checksum", ("Page checksum innodb not valid field1 " ULINTPF " field2 " ULINTPF "crc32 " ULINTPF " lsn " ULINTPF ".", - checksum_field1, checksum_field2, buf_calc_page_old_checksum(read_buf), + checksum_field1, checksum_field2, old_checksum, mach_read_from_4(read_buf + FIL_PAGE_LSN))); return(false); @@ -612,11 +663,11 @@ buf_page_is_checksum_valid_innodb( (always equal to 0), to FIL_PAGE_SPACE_OR_CHKSUM */ if (checksum_field1 != 0 - && checksum_field1 != buf_calc_page_new_checksum(read_buf)) { + && checksum_field1 != new_checksum) { DBUG_PRINT("buf_checksum", ("Page checksum innodb not valid field1 " ULINTPF " field2 " ULINTPF "crc32 " ULINTPF " lsn " ULINTPF ".", - checksum_field1, checksum_field2, buf_calc_page_new_checksum(read_buf), + checksum_field1, checksum_field2, new_checksum, mach_read_from_4(read_buf + FIL_PAGE_LSN))); return(false); @@ -646,6 +697,18 @@ buf_page_is_checksum_valid_none( mach_read_from_4(read_buf + FIL_PAGE_LSN))); } +#ifdef UNIV_INNOCHECKSUM + if (log_file + && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_STRICT_NONE) { + fprintf(log_file, + "page::%lu; none checksum: calculated" + " = %lu; recorded checksum_field1 = %lu" + " recorded checksum_field2 = %lu\n", + cur_page_num, BUF_NO_CHECKSUM_MAGIC, + checksum_field1, checksum_field2); + } +#endif /* UNIV_INNOCHECKSUM */ + return(checksum_field1 == checksum_field2 && checksum_field1 == BUF_NO_CHECKSUM_MAGIC); } @@ -662,14 +725,18 @@ buf_page_is_corrupted( bool check_lsn, const byte* read_buf, ulint zip_size, +#ifndef UNIV_INNOCHECKSUM const fil_space_t* space) +#else + const void* space) +#endif { - ulint checksum_field1; - ulint checksum_field2; - ulint space_id = mach_read_from_4( - read_buf + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); - ulint page_type = mach_read_from_2( - read_buf + FIL_PAGE_TYPE); + ulint checksum_field1 = 0; + ulint checksum_field2 = 0; +#ifndef UNIV_INNOCHECKSUM + ulint space_id = mach_read_from_4(read_buf + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); +#endif + ulint page_type = mach_read_from_2(read_buf + FIL_PAGE_TYPE); /* We can trust page type if page compression is set on tablespace flags because page compression flag means file must have been @@ -682,7 +749,10 @@ buf_page_is_corrupted( decompressed at this stage). */ if ((page_type == FIL_PAGE_PAGE_COMPRESSED || page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) - && space && FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags)) { +#ifndef UNIV_INNOCHECKSUM + && space && FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags) +#endif + ) { return (false); } @@ -693,16 +763,17 @@ buf_page_is_corrupted( /* Stored log sequence numbers at the start and the end of page do not match */ - +#ifndef UNIV_INNOCHECKSUM ib_logf(IB_LOG_LEVEL_INFO, "Log sequence number at the start %lu and the end %lu do not match.", mach_read_from_4(read_buf + FIL_PAGE_LSN + 4), mach_read_from_4(read_buf + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM + 4)); +#endif /* UNIV_INNOCHECKSUM */ return(true); } -#ifndef UNIV_HOTBACKUP +#if !defined(UNIV_HOTBACKUP) && !defined(UNIV_INNOCHECKSUM) if (check_lsn && recv_lsn_checks_on) { lsn_t current_lsn; @@ -742,7 +813,7 @@ buf_page_is_corrupted( } if (zip_size) { - return(!page_zip_verify_checksum(read_buf, zip_size)); + return(!page_zip_verify_checksum((const void *)read_buf, zip_size)); } checksum_field1 = mach_read_from_4( @@ -762,9 +833,10 @@ buf_page_is_corrupted( /* make sure that the page is really empty */ for (ulint i = 0; i < UNIV_PAGE_SIZE; i++) { if (read_buf[i] != 0) { +#ifndef UNIV_INNOCHECKSUM ib_logf(IB_LOG_LEVEL_INFO, "Checksum fields zero but page is not empty."); - +#endif return(true); } } @@ -774,7 +846,9 @@ buf_page_is_corrupted( DBUG_EXECUTE_IF("buf_page_is_corrupt_failure", return(true); ); +#ifndef UNIV_INNOCHECKSUM ulint page_no = mach_read_from_4(read_buf + FIL_PAGE_OFFSET); +#endif const srv_checksum_algorithm_t curr_algo = static_cast(srv_checksum_algorithm); @@ -792,11 +866,31 @@ buf_page_is_corrupted( checksum_field1, checksum_field2)) { if (curr_algo == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { +#ifndef UNIV_INNOCHECKSUM page_warn_strict_checksum( curr_algo, SRV_CHECKSUM_ALGORITHM_NONE, space_id, page_no); +#endif /* !UNIV_INNOCHECKSUM */ + } + +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "page::" ULINTPF ";" + " old style: calculated = " ULINTPF ";" + " recorded = " ULINTPF "\n", + cur_page_num, + buf_calc_page_old_checksum(read_buf), + checksum_field2); + fprintf(log_file, "page::" ULINTPF ";" + " new style: calculated = " ULINTPF ";" + " crc32 = %u; recorded = " ULINTPF "\n", + cur_page_num, + buf_calc_page_new_checksum(read_buf), + buf_calc_page_crc32(read_buf), + checksum_field1); } +#endif /* UNIV_INNOCHECKSUM */ return(false); } @@ -805,15 +899,24 @@ buf_page_is_corrupted( checksum_field1, checksum_field2)) { if (curr_algo == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { +#ifndef UNIV_INNOCHECKSUM page_warn_strict_checksum( curr_algo, SRV_CHECKSUM_ALGORITHM_INNODB, space_id, page_no); +#endif } return(false); } +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "Fail; page " ULINTPF + " invalid (fails crc32 checksum)\n", + cur_page_num); + } +#endif /* UNIV_INNOCHECKSUM */ return(true); case SRV_CHECKSUM_ALGORITHM_INNODB: @@ -828,11 +931,29 @@ buf_page_is_corrupted( checksum_field1, checksum_field2)) { if (curr_algo == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { +#ifndef UNIV_INNOCHECKSUM page_warn_strict_checksum( curr_algo, SRV_CHECKSUM_ALGORITHM_NONE, space_id, page_no); +#endif + } +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "page::" ULINTPF ";" + " old style: calculated = " ULINTPF ";" + " recorded = " ULINTPF "\n", cur_page_num, + buf_calc_page_old_checksum(read_buf), + checksum_field2); + fprintf(log_file, "page::" ULINTPF ";" + " new style: calculated = " ULINTPF ";" + " crc32 = %u; recorded = " ULINTPF "\n", + cur_page_num, + buf_calc_page_new_checksum(read_buf), + buf_calc_page_crc32(read_buf), + checksum_field1); } +#endif /* UNIV_INNOCHECKSUM */ return(false); } @@ -841,15 +962,25 @@ buf_page_is_corrupted( checksum_field1, checksum_field2)) { if (curr_algo == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { +#ifndef UNIV_INNOCHECKSUM page_warn_strict_checksum( curr_algo, SRV_CHECKSUM_ALGORITHM_CRC32, space_id, page_no); +#endif } return(false); } +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "Fail; page " ULINTPF + " invalid (fails innodb checksum)\n", + cur_page_num); + } +#endif /* UNIV_INNOCHECKSUM */ + return(true); case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: @@ -861,22 +992,34 @@ buf_page_is_corrupted( if (buf_page_is_checksum_valid_crc32(read_buf, checksum_field1, checksum_field2)) { +#ifndef UNIV_INNOCHECKSUM page_warn_strict_checksum( curr_algo, SRV_CHECKSUM_ALGORITHM_CRC32, space_id, page_no); +#endif return(false); } if (buf_page_is_checksum_valid_innodb(read_buf, checksum_field1, checksum_field2)) { +#ifndef UNIV_INNOCHECKSUM page_warn_strict_checksum( curr_algo, SRV_CHECKSUM_ALGORITHM_INNODB, space_id, page_no); +#endif return(false); } +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "Fail; page " ULINTPF + " invalid (fails none checksum)\n", + cur_page_num); + } +#endif /* UNIV_INNOCHECKSUM */ + return(true); case SRV_CHECKSUM_ALGORITHM_NONE: @@ -890,6 +1033,7 @@ buf_page_is_corrupted( return(false); } +#ifndef UNIV_INNOCHECKSUM /********************************************************************//** Prints a page to stderr. */ UNIV_INTERN @@ -6352,3 +6496,4 @@ buf_page_decrypt_after_read(buf_page_t* bpage, fil_space_t* space) ut_ad(space->n_pending_ios > 0); return (success); } +#endif /* !UNIV_INNOCHECKSUM */ diff --git a/storage/innobase/buf/buf0checksum.cc b/storage/innobase/buf/buf0checksum.cc index 4101d117896..9e5f1dfe475 100644 --- a/storage/innobase/buf/buf0checksum.cc +++ b/storage/innobase/buf/buf0checksum.cc @@ -128,8 +128,6 @@ buf_calc_page_old_checksum( return(checksum); } -#ifndef UNIV_INNOCHECKSUM - /********************************************************************//** Return a printable string describing the checksum algorithm. @return algorithm name */ @@ -158,4 +156,3 @@ buf_checksum_algorithm_name( return(NULL); } -#endif /* !UNIV_INNOCHECKSUM */ diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc index df5c250df90..b5b762c2cd9 100644 --- a/storage/innobase/fil/fil0crypt.cc +++ b/storage/innobase/fil/fil0crypt.cc @@ -25,13 +25,18 @@ Modified Jan Lindström jan.lindstrom@mariadb.com #include "fil0fil.h" #include "fil0crypt.h" +#include "mach0data.h" +#include "page0zip.h" +#include "buf0buf.h" +#include "buf0checksum.h" + +#ifndef UNIV_INNOCHECKSUM + #include "srv0srv.h" #include "srv0start.h" -#include "mach0data.h" #include "log0recv.h" #include "mtr0mtr.h" #include "mtr0log.h" -#include "page0zip.h" #include "ut0ut.h" #include "btr0scrub.h" #include "fsp0fsp.h" @@ -107,13 +112,20 @@ UNIV_INTERN mysql_pfs_key_t fil_crypt_data_mutex_key; extern my_bool srv_background_scrub_data_uncompressed; extern my_bool srv_background_scrub_data_compressed; +/*********************************************************************** +Check if a key needs rotation given a key_state +@param[in] encrypt_mode Encryption mode +@param[in] key_version Current key version +@param[in] latest_key_version Latest key version +@param[in] rotate_key_age when to rotate +@return true if key needs rotation, false if not */ static bool fil_crypt_needs_rotation( - fil_encryption_t encrypt_mode, /*!< in: Encryption - mode */ - uint key_version, /*!< in: Key version */ - uint latest_key_version, /*!< in: Latest key version */ - uint rotate_key_age); /*!< in: When to rotate */ + fil_encryption_t encrypt_mode, + uint key_version, + uint latest_key_version, + uint rotate_key_age) + MY_ATTRIBUTE((warn_unused_result)); /********************************************************************* Init space crypt */ @@ -908,137 +920,6 @@ fil_crypt_calculate_checksum( return checksum; } -/********************************************************************* -Verify that post encryption checksum match calculated checksum. -This function should be called only if tablespace contains crypt_data -metadata (this is strong indication that tablespace is encrypted). -Function also verifies that traditional checksum does not match -calculated checksum as if it does page could be valid unencrypted, -encrypted, or corrupted. - -@param[in] page Page to verify -@param[in] zip_size zip size -@param[in] space Tablespace -@param[in] pageno Page no -@return true if page is encrypted AND OK, false otherwise */ -UNIV_INTERN -bool -fil_space_verify_crypt_checksum( - byte* page, - ulint zip_size, - const fil_space_t* space, - ulint pageno) -{ - uint key_version = mach_read_from_4(page+ FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION); - - /* If page is not encrypted, return false */ - if (key_version == 0) { - return(false); - } - - /* Read stored post encryption checksum. */ - ib_uint32_t checksum = mach_read_from_4( - page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); - - /* Declare empty pages non-corrupted */ - if (checksum == 0 - && *reinterpret_cast(page + FIL_PAGE_LSN) == 0 - && buf_page_is_zeroes(page, zip_size)) { - return(true); - } - - /* Compressed and encrypted pages do not have checksum. Assume not - corrupted. Page verification happens after decompression in - buf_page_io_complete() using buf_page_is_corrupted(). */ - if (mach_read_from_2(page+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { - return (true); - } - - ib_uint32_t cchecksum1 = 0; - ib_uint32_t cchecksum2 = 0; - - /* Calculate checksums */ - if (zip_size) { - cchecksum1 = page_zip_calc_checksum( - page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); - - if(cchecksum1 != checksum) { - cchecksum2 = page_zip_calc_checksum( - page, zip_size, - SRV_CHECKSUM_ALGORITHM_INNODB); - } - } else { - cchecksum1 = buf_calc_page_crc32(page); - - if (cchecksum1 != checksum) { - cchecksum2 = (ib_uint32_t) buf_calc_page_new_checksum( - page); - } - } - - /* If stored checksum matches one of the calculated checksums - page is not corrupted. */ - - bool encrypted = (checksum == cchecksum1 || checksum == cchecksum2 - || checksum == BUF_NO_CHECKSUM_MAGIC); - - /* MySQL 5.6 and MariaDB 10.0 and 10.1 will write an LSN to the - first page of each system tablespace file at - FIL_PAGE_FILE_FLUSH_LSN offset. On other pages and in other files, - the field might have been uninitialized until MySQL 5.5. In MySQL 5.7 - (and MariaDB Server 10.2.2) WL#7990 stopped writing the field for other - than page 0 of the system tablespace. - - Starting from MariaDB 10.1 the field has been repurposed for - encryption key_version. - - Starting with MySQL 5.7 (and MariaDB Server 10.2), the - field has been repurposed for SPATIAL INDEX pages for - FIL_RTREE_SPLIT_SEQ_NUM. - - Note that FIL_PAGE_FILE_FLUSH_LSN is not included in the InnoDB page - checksum. - - Thus, FIL_PAGE_FILE_FLUSH_LSN could contain any value. While the - field would usually be 0 for pages that are not encrypted, we cannot - assume that a nonzero value means that the page is encrypted. - Therefore we must validate the page both as encrypted and unencrypted - when FIL_PAGE_FILE_FLUSH_LSN does not contain 0. - */ - - ulint checksum1 = mach_read_from_4( - page + FIL_PAGE_SPACE_OR_CHKSUM); - - ulint checksum2 = checksum1; - - bool valid; - - if (zip_size) { - valid = (checksum1 == cchecksum1); - } else { - checksum2 = mach_read_from_4( - page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM); - valid = (buf_page_is_checksum_valid_crc32(page,checksum1,checksum2) - || buf_page_is_checksum_valid_innodb(page,checksum1, checksum2)); - } - - if (encrypted && valid) { - /* If page is encrypted and traditional checksums match, - page could be still encrypted, or not encrypted and valid or - corrupted. */ - ib_logf(IB_LOG_LEVEL_ERROR, - " Page %lu in space %s (%lu) maybe corrupted." - " Post encryption checksum %u stored [%lu:%lu] key_version %u", - pageno, - space ? space->name : "N/A", - mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - checksum, checksum1, checksum2, key_version); - encrypted = false; - } - - return(encrypted); -} - /***********************************************************************/ /** A copy of global key state */ @@ -2555,8 +2436,9 @@ fil_space_crypt_close_tablespace( if (now >= last + 30) { ib_logf(IB_LOG_LEVEL_WARN, - "Waited %ld seconds to drop space: %s(" ULINTPF ").", - now - start, space->name, space->id); + "Waited %ld seconds to drop space: %s (" ULINTPF + ") active threads %u flushing=%d.", + now - start, space->name, space->id, cnt, flushing); last = now; } } @@ -2659,3 +2541,159 @@ fil_space_get_scrub_status( mutex_exit(&crypt_data->mutex); } } + +#endif /* !UNIV_INNOCHECKSUM */ + +/********************************************************************* +Verify that post encryption checksum match calculated checksum. +This function should be called only if tablespace contains crypt_data +metadata (this is strong indication that tablespace is encrypted). +Function also verifies that traditional checksum does not match +calculated checksum as if it does page could be valid unencrypted, +encrypted, or corrupted. + +@param[in] page Page to verify +@param[in] zip_size zip size +@param[in] space Tablespace +@param[in] pageno Page no +@return true if page is encrypted AND OK, false otherwise */ +UNIV_INTERN +bool +fil_space_verify_crypt_checksum( + byte* page, + ulint zip_size, +#ifndef UNIV_INNOCHECKSUM + const fil_space_t* space, +#else + const void* space, +#endif + ulint pageno) +{ + uint key_version = mach_read_from_4(page+ FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION); + + /* If page is not encrypted, return false */ + if (key_version == 0) { + return(false); + } + + srv_checksum_algorithm_t algorithm = + static_cast(srv_checksum_algorithm); + + /* If no checksum is used, can't continue checking. */ + if (algorithm == SRV_CHECKSUM_ALGORITHM_NONE) { + return(true); + } + + /* Read stored post encryption checksum. */ + ib_uint32_t checksum = mach_read_from_4( + page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); + + /* Declare empty pages non-corrupted */ + if (checksum == 0 + && *reinterpret_cast(page + FIL_PAGE_LSN) == 0 + && buf_page_is_zeroes(page, zip_size)) { + return(true); + } + + /* Compressed and encrypted pages do not have checksum. Assume not + corrupted. Page verification happens after decompression in + buf_page_io_complete() using buf_page_is_corrupted(). */ + if (mach_read_from_2(page+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { + return (true); + } + + ib_uint32_t cchecksum1 = 0; + ib_uint32_t cchecksum2 = 0; + + /* Calculate checksums */ + if (zip_size) { + cchecksum1 = page_zip_calc_checksum( + page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); + + cchecksum2 = (cchecksum1 == checksum) + ? 0 + : page_zip_calc_checksum( + page, zip_size, + SRV_CHECKSUM_ALGORITHM_INNODB); + } else { + cchecksum1 = buf_calc_page_crc32(page); + cchecksum2 = (cchecksum1 == checksum) + ? 0 + : buf_calc_page_new_checksum(page); + } + + /* If stored checksum matches one of the calculated checksums + page is not corrupted. */ + + bool encrypted = (checksum == cchecksum1 || checksum == cchecksum2 + || checksum == BUF_NO_CHECKSUM_MAGIC); + + /* MySQL 5.6 and MariaDB 10.0 and 10.1 will write an LSN to the + first page of each system tablespace file at + FIL_PAGE_FILE_FLUSH_LSN offset. On other pages and in other files, + the field might have been uninitialized until MySQL 5.5. In MySQL 5.7 + (and MariaDB Server 10.2.2) WL#7990 stopped writing the field for other + than page 0 of the system tablespace. + + Starting from MariaDB 10.1 the field has been repurposed for + encryption key_version. + + Starting with MySQL 5.7 (and MariaDB Server 10.2), the + field has been repurposed for SPATIAL INDEX pages for + FIL_RTREE_SPLIT_SEQ_NUM. + + Note that FIL_PAGE_FILE_FLUSH_LSN is not included in the InnoDB page + checksum. + + Thus, FIL_PAGE_FILE_FLUSH_LSN could contain any value. While the + field would usually be 0 for pages that are not encrypted, we cannot + assume that a nonzero value means that the page is encrypted. + Therefore we must validate the page both as encrypted and unencrypted + when FIL_PAGE_FILE_FLUSH_LSN does not contain 0. + */ + + uint32_t checksum1 = mach_read_from_4(page + FIL_PAGE_SPACE_OR_CHKSUM); + uint32_t checksum2; + + bool valid; + + if (zip_size) { + valid = (checksum1 == cchecksum1); + checksum2 = checksum1; + } else { + checksum2 = mach_read_from_4( + page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM); + valid = (buf_page_is_checksum_valid_crc32(page,checksum1,checksum2) + || buf_page_is_checksum_valid_innodb(page,checksum1, checksum2)); + } + + if (encrypted && valid) { + /* If page is encrypted and traditional checksums match, + page could be still encrypted, or not encrypted and valid or + corrupted. */ +#ifndef UNIV_INNOCHECKSUM + ib_logf(IB_LOG_LEVEL_ERROR, + " Page " ULINTPF " in space %s (" ULINTPF ") maybe corrupted." + " Post encryption checksum %u stored [%u:%u] key_version %u", + pageno, + space ? space->name : "N/A", + mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), + checksum, checksum1, checksum2, key_version); +#else + if (log_file) { + fprintf(log_file, + "Page " ULINTPF ":" ULINTPF " may be corrupted." + " Post encryption checksum %u" + " stored [%u:%u] key_version %u\n", + pageno, + mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), + checksum, checksum1, checksum2, + key_version); + } +#endif /* UNIV_INNOCHECKSUM */ + + encrypted = false; + } + + return(encrypted); +} diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h index cabc6f64150..5fd3e05370f 100644 --- a/storage/innobase/include/buf0buf.h +++ b/storage/innobase/include/buf0buf.h @@ -31,6 +31,7 @@ Created 11/5/1995 Heikki Tuuri #include "fil0fil.h" #include "mtr0types.h" #include "buf0types.h" +#ifndef UNIV_INNOCHECKSUM #include "hash0hash.h" #include "ut0byte.h" #include "page0types.h" @@ -643,6 +644,8 @@ buf_block_unfix( # define buf_block_modify_clock_inc(block) ((void) 0) #endif /* !UNIV_HOTBACKUP */ +#endif /* !UNIV_INNOCHECKSUM */ + /** Checks if the page is in crc32 checksum format. @param[in] read_buf database page @param[in] checksum_field1 new checksum field @@ -691,8 +694,13 @@ buf_page_is_corrupted( bool check_lsn, const byte* read_buf, ulint zip_size, +#ifndef UNIV_INNOCHECKSUM const fil_space_t* space) +#else + const void* space = NULL) +#endif MY_ATTRIBUTE((warn_unused_result)); + /** Check if a page is all zeroes. @param[in] read_buf database page @param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 @@ -700,6 +708,9 @@ buf_page_is_corrupted( UNIV_INTERN bool buf_page_is_zeroes(const byte* read_buf, ulint zip_size); + +#ifndef UNIV_INNOCHECKSUM + #ifndef UNIV_HOTBACKUP /**********************************************************************//** Gets the space id, page offset, and byte offset within page of a @@ -2470,4 +2481,5 @@ struct CheckUnzipLRUAndLRUList { #include "buf0buf.ic" #endif +#endif /*! UNIV_INNOCHECKSUM */ #endif diff --git a/storage/innobase/include/fil0crypt.h b/storage/innobase/include/fil0crypt.h index 228dfb895fe..7eb8b46d901 100644 --- a/storage/innobase/include/fil0crypt.h +++ b/storage/innobase/include/fil0crypt.h @@ -71,9 +71,11 @@ struct key_struct /** is encryption enabled */ extern ulong srv_encrypt_tables; +#ifndef UNIV_INNOCHECKSUM #ifdef UNIV_PFS_MUTEX extern mysql_pfs_key_t fil_crypt_data_mutex_key; #endif +#endif /* !UNIV_INNOCHECKSUM */ /** Mutex helper for crypt_data->scheme @param[in, out] schme encryption scheme @@ -102,6 +104,8 @@ struct fil_space_rotate_state_t } scrubbing; }; +#ifndef UNIV_INNOCHECKSUM + struct fil_space_crypt_t : st_encryption_scheme { public: @@ -399,6 +403,8 @@ fil_crypt_calculate_checksum( const byte* dst_frame) MY_ATTRIBUTE((warn_unused_result)); +#endif /* UNIV_INNOCHECKSUM */ + /********************************************************************* Verify that post encryption checksum match calculated checksum. This function should be called only if tablespace contains crypt_data @@ -417,10 +423,16 @@ bool fil_space_verify_crypt_checksum( byte* page, ulint zip_size, +#ifndef UNIV_INNOCHECKSUM const fil_space_t* space, +#else + const void* space, +#endif ulint pageno) MY_ATTRIBUTE((warn_unused_result)); +#ifndef UNIV_INNOCHECKSUM + /********************************************************************* Adjust thread count for key rotation @param[in] enw_cnt Number of threads to be used */ @@ -508,4 +520,5 @@ fil_space_get_scrub_status( #include "fil0crypt.ic" #endif +#endif /* !UNIV_INNOCHECKSUM */ #endif /* fil0crypt_h */ diff --git a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h index 8033d0cc839..e481ea3a8aa 100644 --- a/storage/innobase/include/fil0fil.h +++ b/storage/innobase/include/fil0fil.h @@ -183,8 +183,6 @@ extern fil_addr_t fil_addr_null; #define FIL_LOG 502 /*!< redo log */ /* @} */ -#ifndef UNIV_INNOCHECKSUM - /** Structure containing encryption specification */ struct fil_space_crypt_t; @@ -209,6 +207,10 @@ extern ulint fil_n_pending_tablespace_flushes; /** Number of files currently open */ extern ulint fil_n_file_opened; +#ifndef UNIV_INNOCHECKSUM + +struct fil_space_t; + struct fsp_open_info { ibool success; /*!< Has the tablespace been opened? */ const char* check_msg; /*!< fil_check_first_page() message */ @@ -225,8 +227,6 @@ struct fsp_open_info { dict_table_t* table; /*!< table */ }; -struct fil_space_t; - /** File node of a tablespace or the log data space */ struct fil_node_t { fil_space_t* space; /*!< backpointer to the space where this node diff --git a/storage/innobase/include/mach0data.ic b/storage/innobase/include/mach0data.ic index 33b6405c8b5..72e793da8fd 100644 --- a/storage/innobase/include/mach0data.ic +++ b/storage/innobase/include/mach0data.ic @@ -154,6 +154,8 @@ mach_read_from_3( ); } +#endif /* !UNIV_INNOCHECKSUM */ + /*******************************************************//** The following function is used to store data in four consecutive bytes. We store the most significant byte to the lowest address. */ @@ -172,8 +174,6 @@ mach_write_to_4( b[3] = (byte) n; } -#endif /* !UNIV_INNOCHECKSUM */ - /********************************************************//** The following function is used to fetch data from 4 consecutive bytes. The most significant byte is at the lowest address. diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index 1cc89ae503c..aafb84db6f1 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -482,6 +482,12 @@ typedef long int lint; typedef unsigned long long int ullint; #endif /* UNIV_HOTBACKUP */ +#ifdef UNIV_INNOCHECKSUM +extern bool strict_verify; +extern FILE* log_file; +extern ulint cur_page_num; +#endif /* UNIV_INNOCHECKSUM */ + #ifndef __WIN__ #if SIZEOF_LONG != SIZEOF_VOIDP #error "Error: InnoDB's ulint must be of the same size as void*" diff --git a/storage/innobase/page/page0zip.cc b/storage/innobase/page/page0zip.cc index b4a8719c920..6e26f830fe6 100644 --- a/storage/innobase/page/page0zip.cc +++ b/storage/innobase/page/page0zip.cc @@ -4937,26 +4937,26 @@ page_zip_verify_checksum( #error "FIL_PAGE_LSN must be 64 bit aligned" #endif -#ifndef UNIV_INNOCHECKSUM - /* innochecksum doesn't compile with ut_d. Since we don't - need to check for empty pages when running innochecksum, - just don't include this code. */ /* Check if page is empty */ if (stored == 0 && *reinterpret_cast(static_cast( data) + FIL_PAGE_LSN) == 0) { /* make sure that the page is really empty */ - ulint i; - for (i = 0; i < size; i++) { + for (ulint i = 0; i < size; i++) { if (*((const char*) data + i) != 0) { return(FALSE); } } +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "Page::%lu is empty and" + " uncorrupted\n", cur_page_num); + } +#endif /* UNIV_INNOCHECKSUM */ /* Empty page */ return(TRUE); } -#endif const srv_checksum_algorithm_t curr_algo = static_cast(srv_checksum_algorithm); @@ -4968,6 +4968,33 @@ page_zip_verify_checksum( calc = static_cast(page_zip_calc_checksum( data, size, curr_algo)); +#ifdef UNIV_INNOCHECKSUM + if (log_file) { + fprintf(log_file, "page::%lu;" + " %s checksum: calculated = %u;" + " recorded = %u\n", cur_page_num, + buf_checksum_algorithm_name( + static_cast( + srv_checksum_algorithm)), + calc, stored); + } + + if (!strict_verify) { + + const uint32_t crc32 = page_zip_calc_checksum( + data, size, SRV_CHECKSUM_ALGORITHM_CRC32); + + if (log_file) { + fprintf(log_file, "page::%lu: crc32 checksum:" + " calculated = %u; recorded = %u\n", + cur_page_num, crc32, stored); + fprintf(log_file, "page::%lu: none checksum:" + " calculated = %lu; recorded = %u\n", + cur_page_num, BUF_NO_CHECKSUM_MAGIC, stored); + } + } +#endif /* UNIV_INNOCHECKSUM */ + if (stored == calc) { return(TRUE); } diff --git a/storage/xtradb/fil/fil0crypt.cc b/storage/xtradb/fil/fil0crypt.cc index 6d3c2e98010..b5b762c2cd9 100644 --- a/storage/xtradb/fil/fil0crypt.cc +++ b/storage/xtradb/fil/fil0crypt.cc @@ -25,13 +25,18 @@ Modified Jan Lindström jan.lindstrom@mariadb.com #include "fil0fil.h" #include "fil0crypt.h" +#include "mach0data.h" +#include "page0zip.h" +#include "buf0buf.h" +#include "buf0checksum.h" + +#ifndef UNIV_INNOCHECKSUM + #include "srv0srv.h" #include "srv0start.h" -#include "mach0data.h" #include "log0recv.h" #include "mtr0mtr.h" #include "mtr0log.h" -#include "page0zip.h" #include "ut0ut.h" #include "btr0scrub.h" #include "fsp0fsp.h" @@ -107,13 +112,20 @@ UNIV_INTERN mysql_pfs_key_t fil_crypt_data_mutex_key; extern my_bool srv_background_scrub_data_uncompressed; extern my_bool srv_background_scrub_data_compressed; +/*********************************************************************** +Check if a key needs rotation given a key_state +@param[in] encrypt_mode Encryption mode +@param[in] key_version Current key version +@param[in] latest_key_version Latest key version +@param[in] rotate_key_age when to rotate +@return true if key needs rotation, false if not */ static bool fil_crypt_needs_rotation( - fil_encryption_t encrypt_mode, /*!< in: Encryption - mode */ - uint key_version, /*!< in: Key version */ - uint latest_key_version, /*!< in: Latest key version */ - uint rotate_key_age); /*!< in: When to rotate */ + fil_encryption_t encrypt_mode, + uint key_version, + uint latest_key_version, + uint rotate_key_age) + MY_ATTRIBUTE((warn_unused_result)); /********************************************************************* Init space crypt */ @@ -908,137 +920,6 @@ fil_crypt_calculate_checksum( return checksum; } -/********************************************************************* -Verify that post encryption checksum match calculated checksum. -This function should be called only if tablespace contains crypt_data -metadata (this is strong indication that tablespace is encrypted). -Function also verifies that traditional checksum does not match -calculated checksum as if it does page could be valid unencrypted, -encrypted, or corrupted. - -@param[in] page Page to verify -@param[in] zip_size zip size -@param[in] space Tablespace -@param[in] pageno Page no -@return true if page is encrypted AND OK, false otherwise */ -UNIV_INTERN -bool -fil_space_verify_crypt_checksum( - byte* page, - ulint zip_size, - const fil_space_t* space, - ulint pageno) -{ - uint key_version = mach_read_from_4(page+ FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION); - - /* If page is not encrypted, return false */ - if (key_version == 0) { - return(false); - } - - /* Read stored post encryption checksum. */ - ib_uint32_t checksum = mach_read_from_4( - page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); - - /* Declare empty pages non-corrupted */ - if (checksum == 0 - && *reinterpret_cast(page + FIL_PAGE_LSN) == 0 - && buf_page_is_zeroes(page, zip_size)) { - return(true); - } - - /* Compressed and encrypted pages do not have checksum. Assume not - corrupted. Page verification happens after decompression in - buf_page_io_complete() using buf_page_is_corrupted(). */ - if (mach_read_from_2(page+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { - return (true); - } - - ib_uint32_t cchecksum1 = 0; - ib_uint32_t cchecksum2 = 0; - - /* Calculate checksums */ - if (zip_size) { - cchecksum1 = page_zip_calc_checksum( - page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); - - if(cchecksum1 != checksum) { - cchecksum2 = page_zip_calc_checksum( - page, zip_size, - SRV_CHECKSUM_ALGORITHM_INNODB); - } - } else { - cchecksum1 = buf_calc_page_crc32(page); - - if (cchecksum1 != checksum) { - cchecksum2 = (ib_uint32_t) buf_calc_page_new_checksum( - page); - } - } - - /* If stored checksum matches one of the calculated checksums - page is not corrupted. */ - - bool encrypted = (checksum == cchecksum1 || checksum == cchecksum2 - || checksum == BUF_NO_CHECKSUM_MAGIC); - - /* MySQL 5.6 and MariaDB 10.0 and 10.1 will write an LSN to the - first page of each system tablespace file at - FIL_PAGE_FILE_FLUSH_LSN offset. On other pages and in other files, - the field might have been uninitialized until MySQL 5.5. In MySQL 5.7 - (and MariaDB Server 10.2.2) WL#7990 stopped writing the field for other - than page 0 of the system tablespace. - - Starting from MariaDB 10.1 the field has been repurposed for - encryption key_version. - - Starting with MySQL 5.7 (and MariaDB Server 10.2), the - field has been repurposed for SPATIAL INDEX pages for - FIL_RTREE_SPLIT_SEQ_NUM. - - Note that FIL_PAGE_FILE_FLUSH_LSN is not included in the InnoDB page - checksum. - - Thus, FIL_PAGE_FILE_FLUSH_LSN could contain any value. While the - field would usually be 0 for pages that are not encrypted, we cannot - assume that a nonzero value means that the page is encrypted. - Therefore we must validate the page both as encrypted and unencrypted - when FIL_PAGE_FILE_FLUSH_LSN does not contain 0. - */ - - ulint checksum1 = mach_read_from_4( - page + FIL_PAGE_SPACE_OR_CHKSUM); - - ulint checksum2 = checksum1; - - bool valid; - - if (zip_size) { - valid = (checksum1 == cchecksum1); - } else { - checksum1 = mach_read_from_4( - page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM); - valid = (buf_page_is_checksum_valid_crc32(page,checksum1,checksum2) - || buf_page_is_checksum_valid_innodb(page,checksum1, checksum2)); - } - - if (encrypted && valid) { - /* If page is encrypted and traditional checksums match, - page could be still encrypted, or not encrypted and valid or - corrupted. */ - ib_logf(IB_LOG_LEVEL_ERROR, - " Page %lu in space %s (%lu) maybe corrupted." - " Post encryption checksum %u stored [%lu:%lu] key_version %u", - pageno, - space ? space->name : "N/A", - mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - checksum, checksum1, checksum2, key_version); - encrypted = false; - } - - return(encrypted); -} - /***********************************************************************/ /** A copy of global key state */ @@ -2660,3 +2541,159 @@ fil_space_get_scrub_status( mutex_exit(&crypt_data->mutex); } } + +#endif /* !UNIV_INNOCHECKSUM */ + +/********************************************************************* +Verify that post encryption checksum match calculated checksum. +This function should be called only if tablespace contains crypt_data +metadata (this is strong indication that tablespace is encrypted). +Function also verifies that traditional checksum does not match +calculated checksum as if it does page could be valid unencrypted, +encrypted, or corrupted. + +@param[in] page Page to verify +@param[in] zip_size zip size +@param[in] space Tablespace +@param[in] pageno Page no +@return true if page is encrypted AND OK, false otherwise */ +UNIV_INTERN +bool +fil_space_verify_crypt_checksum( + byte* page, + ulint zip_size, +#ifndef UNIV_INNOCHECKSUM + const fil_space_t* space, +#else + const void* space, +#endif + ulint pageno) +{ + uint key_version = mach_read_from_4(page+ FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION); + + /* If page is not encrypted, return false */ + if (key_version == 0) { + return(false); + } + + srv_checksum_algorithm_t algorithm = + static_cast(srv_checksum_algorithm); + + /* If no checksum is used, can't continue checking. */ + if (algorithm == SRV_CHECKSUM_ALGORITHM_NONE) { + return(true); + } + + /* Read stored post encryption checksum. */ + ib_uint32_t checksum = mach_read_from_4( + page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); + + /* Declare empty pages non-corrupted */ + if (checksum == 0 + && *reinterpret_cast(page + FIL_PAGE_LSN) == 0 + && buf_page_is_zeroes(page, zip_size)) { + return(true); + } + + /* Compressed and encrypted pages do not have checksum. Assume not + corrupted. Page verification happens after decompression in + buf_page_io_complete() using buf_page_is_corrupted(). */ + if (mach_read_from_2(page+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { + return (true); + } + + ib_uint32_t cchecksum1 = 0; + ib_uint32_t cchecksum2 = 0; + + /* Calculate checksums */ + if (zip_size) { + cchecksum1 = page_zip_calc_checksum( + page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); + + cchecksum2 = (cchecksum1 == checksum) + ? 0 + : page_zip_calc_checksum( + page, zip_size, + SRV_CHECKSUM_ALGORITHM_INNODB); + } else { + cchecksum1 = buf_calc_page_crc32(page); + cchecksum2 = (cchecksum1 == checksum) + ? 0 + : buf_calc_page_new_checksum(page); + } + + /* If stored checksum matches one of the calculated checksums + page is not corrupted. */ + + bool encrypted = (checksum == cchecksum1 || checksum == cchecksum2 + || checksum == BUF_NO_CHECKSUM_MAGIC); + + /* MySQL 5.6 and MariaDB 10.0 and 10.1 will write an LSN to the + first page of each system tablespace file at + FIL_PAGE_FILE_FLUSH_LSN offset. On other pages and in other files, + the field might have been uninitialized until MySQL 5.5. In MySQL 5.7 + (and MariaDB Server 10.2.2) WL#7990 stopped writing the field for other + than page 0 of the system tablespace. + + Starting from MariaDB 10.1 the field has been repurposed for + encryption key_version. + + Starting with MySQL 5.7 (and MariaDB Server 10.2), the + field has been repurposed for SPATIAL INDEX pages for + FIL_RTREE_SPLIT_SEQ_NUM. + + Note that FIL_PAGE_FILE_FLUSH_LSN is not included in the InnoDB page + checksum. + + Thus, FIL_PAGE_FILE_FLUSH_LSN could contain any value. While the + field would usually be 0 for pages that are not encrypted, we cannot + assume that a nonzero value means that the page is encrypted. + Therefore we must validate the page both as encrypted and unencrypted + when FIL_PAGE_FILE_FLUSH_LSN does not contain 0. + */ + + uint32_t checksum1 = mach_read_from_4(page + FIL_PAGE_SPACE_OR_CHKSUM); + uint32_t checksum2; + + bool valid; + + if (zip_size) { + valid = (checksum1 == cchecksum1); + checksum2 = checksum1; + } else { + checksum2 = mach_read_from_4( + page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM); + valid = (buf_page_is_checksum_valid_crc32(page,checksum1,checksum2) + || buf_page_is_checksum_valid_innodb(page,checksum1, checksum2)); + } + + if (encrypted && valid) { + /* If page is encrypted and traditional checksums match, + page could be still encrypted, or not encrypted and valid or + corrupted. */ +#ifndef UNIV_INNOCHECKSUM + ib_logf(IB_LOG_LEVEL_ERROR, + " Page " ULINTPF " in space %s (" ULINTPF ") maybe corrupted." + " Post encryption checksum %u stored [%u:%u] key_version %u", + pageno, + space ? space->name : "N/A", + mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), + checksum, checksum1, checksum2, key_version); +#else + if (log_file) { + fprintf(log_file, + "Page " ULINTPF ":" ULINTPF " may be corrupted." + " Post encryption checksum %u" + " stored [%u:%u] key_version %u\n", + pageno, + mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), + checksum, checksum1, checksum2, + key_version); + } +#endif /* UNIV_INNOCHECKSUM */ + + encrypted = false; + } + + return(encrypted); +} -- cgit v1.2.1 From b1a2031ff96f132bf065d6b41593a842478a6659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Wed, 2 Aug 2017 12:17:21 +0300 Subject: 5.6.36-82.1 --- storage/tokudb/CMakeLists.txt | 2 +- storage/tokudb/PerconaFT/CMakeLists.txt | 10 + storage/tokudb/PerconaFT/buildheader/make_tdb.cc | 5 +- .../PerconaFT/cmake_modules/TokuThirdParty.cmake | 3 + .../tokudb/PerconaFT/ft/cachetable/cachetable.cc | 9 +- .../tokudb/PerconaFT/ft/cachetable/cachetable.h | 3 + storage/tokudb/PerconaFT/ft/ft-ops.cc | 97 +- storage/tokudb/PerconaFT/ft/ft.cc | 3 +- storage/tokudb/PerconaFT/ft/node.cc | 19 +- storage/tokudb/PerconaFT/ft/node.h | 20 +- .../tokudb/PerconaFT/ft/serialize/ft-serialize.cc | 43 +- .../tokudb/PerconaFT/ft/serialize/ft-serialize.h | 23 +- .../PerconaFT/ft/serialize/ft_node-serialize.cc | 689 ++- .../PerconaFT/ft/serialize/ft_node-serialize.h | 69 +- storage/tokudb/PerconaFT/ft/txn/roll.cc | 2 +- storage/tokudb/PerconaFT/ft/txn/txn.cc | 9 +- storage/tokudb/PerconaFT/ft/txn/txn.h | 5 +- storage/tokudb/PerconaFT/locktree/lock_request.cc | 150 +- storage/tokudb/PerconaFT/locktree/lock_request.h | 23 +- storage/tokudb/PerconaFT/locktree/locktree.cc | 44 +- storage/tokudb/PerconaFT/locktree/locktree.h | 33 +- storage/tokudb/PerconaFT/locktree/manager.cc | 13 + .../tokudb/PerconaFT/locktree/tests/kill_waiter.cc | 100 + .../locktree/tests/lock_request_killed.cc | 3 +- .../locktree/tests/lock_request_not_killed.cc | 1 - .../tests/lock_request_start_release_wait.cc | 91 + .../tests/lock_request_start_retry_race.cc | 121 +- .../tests/lock_request_start_retry_race_3.cc | 133 + .../tests/lock_request_start_retry_wait_race_2.cc | 135 + .../tokudb/PerconaFT/portability/toku_debug_sync.h | 77 + .../PerconaFT/portability/toku_portability.h | 3 + .../src/tests/test_iterate_live_transactions.cc | 9 +- storage/tokudb/PerconaFT/src/tests/test_stress0.cc | 3 +- .../PerconaFT/src/tests/transactional_fileops.cc | 9 + storage/tokudb/PerconaFT/src/ydb.cc | 38 +- storage/tokudb/PerconaFT/src/ydb_row_lock.cc | 22 +- storage/tokudb/PerconaFT/src/ydb_txn.cc | 8 +- storage/tokudb/PerconaFT/tools/CMakeLists.txt | 8 + storage/tokudb/PerconaFT/tools/ftverify.cc | 2 +- storage/tokudb/PerconaFT/tools/tokuftdump.cc | 3 +- storage/tokudb/ha_tokudb.cc | 124 +- storage/tokudb/ha_tokudb.h | 41 +- storage/tokudb/hatoku_hton.cc | 8 + .../tokudb/r/kill_query_blocked_in_lt.result | 26 + .../tokudb/r/locks-select-update-3.result | 5 +- .../tokudb/t/kill_query_blocked_in_lt.test | 56 + .../mysql-test/tokudb/t/locks-select-update-3.test | 10 +- .../tokudb_backup/r/rpl_safe_slave.result | 2 - .../mysql-test/tokudb_backup/t/rpl_safe_slave.inc | 3 - .../include/rpl_tokudb_row_img_general_loop.inc | 42 + .../tokudb_rpl/r/rpl_not_null_tokudb.result | 32 +- .../tokudb_rpl/r/rpl_row_basic_3tokudb.result | 40 +- .../r/rpl_tokudb_commit_after_flush.result | 15 + .../tokudb_rpl/r/rpl_tokudb_insert_id.result | 554 +++ .../tokudb_rpl/r/rpl_tokudb_insert_id_pk.result | 82 + .../tokudb_rpl/r/rpl_tokudb_multi_update.result | 29 + .../tokudb_rpl/r/rpl_tokudb_multi_update2.result | 60 + .../tokudb_rpl/r/rpl_tokudb_multi_update3.result | 202 + .../tokudb_rpl/r/rpl_tokudb_row_crash_safe.result | 2183 +++++++++ .../tokudb_rpl/r/rpl_tokudb_row_img_blobs.result | 4739 ++++++++++++++++++++ .../r/rpl_tokudb_row_img_eng_full.result | 3681 +++++++++++++++ .../tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result | 3522 +++++++++++++++ .../r/rpl_tokudb_row_img_eng_noblob.result | 3522 +++++++++++++++ .../r/rpl_tokudb_row_img_idx_full.result | 3505 +++++++++++++++ .../tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result | 3530 +++++++++++++++ .../r/rpl_tokudb_row_img_idx_noblob.result | 3530 +++++++++++++++ .../tokudb_rpl/r/rpl_tokudb_row_log.result | 275 ++ .../r/rpl_tokudb_row_lower_case_table_names.result | 51 + .../tokudb_rpl/r/rpl_tokudb_row_sp003.result | 60 + .../tokudb_rpl/r/rpl_tokudb_row_sp006.result | 47 + .../tokudb_rpl/r/rpl_tokudb_row_trig004.result | 32 + .../tokudb_rpl/r/rpl_tokudb_stm_log.result | 274 ++ .../r/rpl_tokudb_stm_mixed_crash_safe.result | 1773 ++++++++ ..._tokudb_stm_mixed_lower_case_table_names.result | 48 + .../tokudb_rpl/t/rpl_not_null_tokudb.test | 4 +- .../tokudb_rpl/t/rpl_row_basic_3tokudb.test | 12 +- .../t/rpl_tokudb_commit_after_flush.test | 6 + .../tokudb_rpl/t/rpl_tokudb_insert_id-master.opt | 1 + .../tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt | 1 + .../tokudb_rpl/t/rpl_tokudb_insert_id.test | 7 + .../tokudb_rpl/t/rpl_tokudb_insert_id_pk.test | 7 + .../tokudb_rpl/t/rpl_tokudb_multi_update.test | 4 + .../t/rpl_tokudb_multi_update2-slave.opt | 1 + .../tokudb_rpl/t/rpl_tokudb_multi_update2.test | 14 + .../tokudb_rpl/t/rpl_tokudb_multi_update3.test | 13 + .../t/rpl_tokudb_row_crash_safe-master.opt | 1 + .../t/rpl_tokudb_row_crash_safe-slave.opt | 1 + .../tokudb_rpl/t/rpl_tokudb_row_crash_safe.test | 19 + .../tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf | 1 + .../tokudb_rpl/t/rpl_tokudb_row_img_blobs.test | 53 + .../tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf | 1 + .../tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test | 50 + .../tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf | 1 + .../tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test | 42 + .../tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf | 1 + .../t/rpl_tokudb_row_img_eng_noblob.test | 42 + .../tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf | 1 + .../tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test | 38 + .../tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf | 1 + .../tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test | 41 + .../tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf | 1 + .../t/rpl_tokudb_row_img_idx_noblob.test | 41 + .../tokudb_rpl/t/rpl_tokudb_row_log-master.opt | 2 + .../tokudb_rpl/t/rpl_tokudb_row_log.test | 15 + ...rpl_tokudb_row_lower_case_table_names-slave.opt | 1 + .../t/rpl_tokudb_row_lower_case_table_names.test | 14 + .../tokudb_rpl/t/rpl_tokudb_row_sp003.test | 14 + .../tokudb_rpl/t/rpl_tokudb_row_sp006.test | 14 + .../tokudb_rpl/t/rpl_tokudb_row_trig004.test | 19 + .../tokudb_rpl/t/rpl_tokudb_stm_log-master.opt | 2 + .../tokudb_rpl/t/rpl_tokudb_stm_log.test | 15 + .../t/rpl_tokudb_stm_mixed_crash_safe-master.opt | 1 + .../t/rpl_tokudb_stm_mixed_crash_safe-slave.opt | 1 + .../t/rpl_tokudb_stm_mixed_crash_safe.test | 18 + ...kudb_stm_mixed_lower_case_table_names-slave.opt | 1 + ...pl_tokudb_stm_mixed_lower_case_table_names.test | 14 + storage/tokudb/tokudb_information_schema.cc | 6 +- storage/tokudb/tokudb_txn.h | 2 +- 118 files changed, 34166 insertions(+), 521 deletions(-) create mode 100644 storage/tokudb/PerconaFT/locktree/tests/kill_waiter.cc create mode 100644 storage/tokudb/PerconaFT/locktree/tests/lock_request_start_release_wait.cc create mode 100644 storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race_3.cc create mode 100644 storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_wait_race_2.cc create mode 100644 storage/tokudb/PerconaFT/portability/toku_debug_sync.h create mode 100644 storage/tokudb/mysql-test/tokudb/r/kill_query_blocked_in_lt.result create mode 100644 storage/tokudb/mysql-test/tokudb/t/kill_query_blocked_in_lt.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_trig004.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_log.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt create mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test (limited to 'storage') diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt index 2438b7ac3fe..904dd9bbe4e 100644 --- a/storage/tokudb/CMakeLists.txt +++ b/storage/tokudb/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TOKUDB_VERSION 5.6.36-82.0) +SET(TOKUDB_VERSION 5.6.36-82.1) # PerconaFT only supports x86-64 and cmake-2.8.9+ IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT CMAKE_VERSION VERSION_LESS "2.8.9") diff --git a/storage/tokudb/PerconaFT/CMakeLists.txt b/storage/tokudb/PerconaFT/CMakeLists.txt index 59e0d145ce0..a850400e726 100644 --- a/storage/tokudb/PerconaFT/CMakeLists.txt +++ b/storage/tokudb/PerconaFT/CMakeLists.txt @@ -9,6 +9,16 @@ project(TokuDB) set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") +# detect when we are being built as a subproject +if (DEFINED MYSQL_PROJECT_NAME_DOCSTRING) + add_definitions( -DMYSQL_TOKUDB_ENGINE=1) + if ((CMAKE_BUILD_TYPE MATCHES "Debug") AND + (CMAKE_CXX_FLAGS_DEBUG MATCHES " -DENABLED_DEBUG_SYNC")) + include_directories(${CMAKE_SOURCE_DIR}/include) + include_directories(${CMAKE_SOURCE_DIR}/sql) + endif () +endif () + ## Versions of gcc >= 4.9.0 require special version of 'ar' and 'ranlib' for ## link-time optimizations to work properly. ## diff --git a/storage/tokudb/PerconaFT/buildheader/make_tdb.cc b/storage/tokudb/PerconaFT/buildheader/make_tdb.cc index d0404b420f4..0a59da8a54c 100644 --- a/storage/tokudb/PerconaFT/buildheader/make_tdb.cc +++ b/storage/tokudb/PerconaFT/buildheader/make_tdb.cc @@ -428,6 +428,7 @@ static void print_db_env_struct (void) { "int (*dirtool_attach)(DB_ENV *, DB_TXN *, const char *, const char *)", "int (*dirtool_detach)(DB_ENV *, DB_TXN *, const char *)", "int (*dirtool_move)(DB_ENV *, DB_TXN *, const char *, const char *)", + "void (*kill_waiter)(DB_ENV *, void *extra)", NULL}; sort_and_dump_fields("db_env", true, extra); @@ -548,8 +549,8 @@ static void print_db_txn_struct (void) { "int (*abort_with_progress)(DB_TXN*, TXN_PROGRESS_POLL_FUNCTION, void*)", "int (*xa_prepare) (DB_TXN*, TOKU_XA_XID *, uint32_t flags)", "uint64_t (*id64) (DB_TXN*)", - "void (*set_client_id)(DB_TXN *, uint64_t client_id)", - "uint64_t (*get_client_id)(DB_TXN *)", + "void (*set_client_id)(DB_TXN *, uint64_t client_id, void *client_extra)", + "void (*get_client_id)(DB_TXN *, uint64_t *client_id, void **client_extra)", "bool (*is_prepared)(DB_TXN *)", "DB_TXN *(*get_child)(DB_TXN *)", "uint64_t (*get_start_time)(DB_TXN *)", diff --git a/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake b/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake index db94b19f08c..b707f368431 100644 --- a/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake +++ b/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake @@ -123,6 +123,9 @@ ExternalProject_Add(build_snappy -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} + -DCMAKE_AR=${CMAKE_AR} + -DCMAKE_NM=${CMAKE_NM} + -DCMAKE_RANLIB=${CMAKE_RANLIB} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ${USE_PROJECT_CMAKE_MODULE_PATH} diff --git a/storage/tokudb/PerconaFT/ft/cachetable/cachetable.cc b/storage/tokudb/PerconaFT/ft/cachetable/cachetable.cc index 6d753805fa9..31aab932fd6 100644 --- a/storage/tokudb/PerconaFT/ft/cachetable/cachetable.cc +++ b/storage/tokudb/PerconaFT/ft/cachetable/cachetable.cc @@ -464,7 +464,10 @@ int toku_cachetable_openf (CACHEFILE *cfptr, CACHETABLE ct, const char *fname_in char * toku_cachefile_fname_in_env (CACHEFILE cf) { - return cf->fname_in_env; + if (cf) { + return cf->fname_in_env; + } + return nullptr; } void toku_cachefile_set_fname_in_env(CACHEFILE cf, char *new_fname_in_env) { @@ -2890,6 +2893,10 @@ toku_cachefile_get_cachetable(CACHEFILE cf) { return cf->cachetable; } +CACHEFILE toku_pair_get_cachefile(PAIR pair) { + return pair->cachefile; +} + //Only called by ft_end_checkpoint //Must have access to cf->fd (must be protected) void toku_cachefile_fsync(CACHEFILE cf) { diff --git a/storage/tokudb/PerconaFT/ft/cachetable/cachetable.h b/storage/tokudb/PerconaFT/ft/cachetable/cachetable.h index 3b3cb0a2d46..b9851f33e20 100644 --- a/storage/tokudb/PerconaFT/ft/cachetable/cachetable.h +++ b/storage/tokudb/PerconaFT/ft/cachetable/cachetable.h @@ -297,6 +297,9 @@ void *toku_cachefile_get_userdata(CACHEFILE); CACHETABLE toku_cachefile_get_cachetable(CACHEFILE cf); // Effect: Get the cachetable. +CACHEFILE toku_pair_get_cachefile(PAIR); +// Effect: Get the cachefile of the pair + void toku_cachetable_swap_pair_values(PAIR old_pair, PAIR new_pair); // Effect: Swaps the value_data of old_pair and new_pair. // Requires: both old_pair and new_pair to be pinned with write locks. diff --git a/storage/tokudb/PerconaFT/ft/ft-ops.cc b/storage/tokudb/PerconaFT/ft/ft-ops.cc index 63c6335dafd..07e244947e4 100644 --- a/storage/tokudb/PerconaFT/ft/ft-ops.cc +++ b/storage/tokudb/PerconaFT/ft/ft-ops.cc @@ -651,8 +651,12 @@ void toku_ftnode_clone_callback(void *value_data, // set new pair attr if necessary if (node->height == 0) { *new_attr = make_ftnode_pair_attr(node); - node->logical_rows_delta = 0; - cloned_node->logical_rows_delta = 0; + for (int i = 0; i < node->n_children; i++) { + if (BP_STATE(node, i) == PT_AVAIL) { + BLB_LRD(node, i) = 0; + BLB_LRD(cloned_node, i) = 0; + } + } } else { new_attr->is_valid = false; } @@ -700,9 +704,26 @@ void toku_ftnode_flush_callback(CACHEFILE UU(cachefile), if (ftnode->height == 0) { FT_STATUS_INC(FT_FULL_EVICTIONS_LEAF, 1); FT_STATUS_INC(FT_FULL_EVICTIONS_LEAF_BYTES, node_size); - if (!ftnode->dirty) { - toku_ft_adjust_logical_row_count( - ft, -ftnode->logical_rows_delta); + + // A leaf node (height == 0) is being evicted (!keep_me) and is + // not a checkpoint clone (!is_clone). This leaf node may have + // had messages applied to satisfy a query, but was never + // actually dirtied (!ftnode->dirty && !write_me). **Note that + // if (write_me) would persist the node and clear the dirty + // flag **. This message application may have updated the trees + // logical row count. Since these message applications are not + // persisted, we need undo the logical row count adjustments as + // they may occur again in the future if/when the node is + // re-read from disk for another query or change. + if (!ftnode->dirty && !write_me) { + int64_t lrc_delta = 0; + for (int i = 0; i < ftnode->n_children; i++) { + if (BP_STATE(ftnode, i) == PT_AVAIL) { + lrc_delta -= BLB_LRD(ftnode, i); + BLB_LRD(ftnode, i) = 0; + } + } + toku_ft_adjust_logical_row_count(ft, lrc_delta); } } else { FT_STATUS_INC(FT_FULL_EVICTIONS_NONLEAF, 1); @@ -711,6 +732,11 @@ void toku_ftnode_flush_callback(CACHEFILE UU(cachefile), toku_free(*disk_data); } else { if (ftnode->height == 0) { + // No need to adjust logical row counts when flushing a clone + // as they should have been zeroed out anyway when cloned. + // Clones are 'copies' of work already done so doing it again + // (adjusting row counts) would be redundant and leads to + // inaccurate counts. for (int i = 0; i < ftnode->n_children; i++) { if (BP_STATE(ftnode, i) == PT_AVAIL) { BASEMENTNODE bn = BLB(ftnode, i); @@ -718,10 +744,6 @@ void toku_ftnode_flush_callback(CACHEFILE UU(cachefile), bn->stat64_delta); } } - if (!ftnode->dirty) { - toku_ft_adjust_logical_row_count( - ft, -ftnode->logical_rows_delta); - } } } toku_ftnode_free(&ftnode); @@ -748,24 +770,48 @@ toku_ft_status_update_pivot_fetch_reason(ftnode_fetch_extra *bfe) } } -int toku_ftnode_fetch_callback (CACHEFILE UU(cachefile), PAIR p, int fd, BLOCKNUM blocknum, uint32_t fullhash, - void **ftnode_pv, void** disk_data, PAIR_ATTR *sizep, int *dirtyp, void *extraargs) { +int toku_ftnode_fetch_callback(CACHEFILE UU(cachefile), + PAIR p, + int fd, + BLOCKNUM blocknum, + uint32_t fullhash, + void **ftnode_pv, + void **disk_data, + PAIR_ATTR *sizep, + int *dirtyp, + void *extraargs) { assert(extraargs); - assert(*ftnode_pv == NULL); - FTNODE_DISK_DATA* ndd = (FTNODE_DISK_DATA*)disk_data; + assert(*ftnode_pv == nullptr); + FTNODE_DISK_DATA *ndd = (FTNODE_DISK_DATA *)disk_data; ftnode_fetch_extra *bfe = (ftnode_fetch_extra *)extraargs; - FTNODE *node=(FTNODE*)ftnode_pv; + FTNODE *node = (FTNODE *)ftnode_pv; // deserialize the node, must pass the bfe in because we cannot // evaluate what piece of the the node is necessary until we get it at // least partially into memory - int r = toku_deserialize_ftnode_from(fd, blocknum, fullhash, node, ndd, bfe); + int r = + toku_deserialize_ftnode_from(fd, blocknum, fullhash, node, ndd, bfe); if (r != 0) { if (r == TOKUDB_BAD_CHECKSUM) { - fprintf(stderr, - "Checksum failure while reading node in file %s.\n", - toku_cachefile_fname_in_env(cachefile)); + fprintf( + stderr, + "%s:%d:toku_ftnode_fetch_callback - " + "file[%s], blocknum[%ld], toku_deserialize_ftnode_from " + "failed with a checksum error.\n", + __FILE__, + __LINE__, + toku_cachefile_fname_in_env(cachefile), + blocknum.b); } else { - fprintf(stderr, "Error deserializing node, errno = %d", r); + fprintf( + stderr, + "%s:%d:toku_ftnode_fetch_callback - " + "file[%s], blocknum[%ld], toku_deserialize_ftnode_from " + "failed with %d.\n", + __FILE__, + __LINE__, + toku_cachefile_fname_in_env(cachefile), + blocknum.b, + r); } // make absolutely sure we crash before doing anything else. abort(); @@ -774,7 +820,8 @@ int toku_ftnode_fetch_callback (CACHEFILE UU(cachefile), PAIR p, int fd, BLOCKNU if (r == 0) { *sizep = make_ftnode_pair_attr(*node); (*node)->ct_pair = p; - *dirtyp = (*node)->dirty; // deserialize could mark the node as dirty (presumably for upgrade) + *dirtyp = (*node)->dirty; // deserialize could mark the node as dirty + // (presumably for upgrade) } return r; } @@ -947,6 +994,16 @@ int toku_ftnode_pe_callback(void *ftnode_pv, basements_to_destroy[num_basements_to_destroy++] = bn; toku_ft_decrease_stats(&ft->in_memory_stats, bn->stat64_delta); + // A basement node is being partially evicted. + // This masement node may have had messages applied to it to + // satisfy a query, but was never actually dirtied. + // This message application may have updated the trees + // logical row count. Since these message applications are + // not being persisted, we need undo the logical row count + // adjustments as they may occur again in the future if/when + // the node is re-read from disk for another query or change. + toku_ft_adjust_logical_row_count(ft, + -bn->logical_rows_delta); set_BNULL(node, i); BP_STATE(node, i) = PT_ON_DISK; num_partial_evictions++; diff --git a/storage/tokudb/PerconaFT/ft/ft.cc b/storage/tokudb/PerconaFT/ft/ft.cc index 7c94b4c59d3..700e532d5cf 100644 --- a/storage/tokudb/PerconaFT/ft/ft.cc +++ b/storage/tokudb/PerconaFT/ft/ft.cc @@ -435,7 +435,8 @@ int toku_read_ft_and_store_in_cachefile (FT_HANDLE ft_handle, CACHEFILE cf, LSN } int fd = toku_cachefile_get_fd(cf); - int r = toku_deserialize_ft_from(fd, max_acceptable_lsn, &ft); + const char *fn = toku_cachefile_fname_in_env(cf); + int r = toku_deserialize_ft_from(fd, fn, max_acceptable_lsn, &ft); if (r == TOKUDB_BAD_CHECKSUM) { fprintf(stderr, "Checksum failure while reading header in file %s.\n", toku_cachefile_fname_in_env(cf)); assert(false); // make absolutely sure we crash before doing anything else diff --git a/storage/tokudb/PerconaFT/ft/node.cc b/storage/tokudb/PerconaFT/ft/node.cc index 07309ff7f94..ce918940bd7 100644 --- a/storage/tokudb/PerconaFT/ft/node.cc +++ b/storage/tokudb/PerconaFT/ft/node.cc @@ -93,6 +93,7 @@ void toku_destroy_ftnode_internals(FTNODE node) { if (node->height > 0) { destroy_nonleaf_childinfo(BNC(node,i)); } else { + paranoid_invariant(BLB_LRD(node, i) == 0); destroy_basement_node(BLB(node, i)); } } else if (BP_STATE(node,i) == PT_COMPRESSED) { @@ -386,8 +387,7 @@ static void bnc_apply_messages_to_basement_node( const pivot_bounds & bounds, // contains pivot key bounds of this basement node txn_gc_info *gc_info, - bool *msgs_applied, - int64_t* logical_rows_delta) { + bool *msgs_applied) { int r; NONLEAF_CHILDINFO bnc = BNC(ancestor, childnum); @@ -395,6 +395,7 @@ static void bnc_apply_messages_to_basement_node( // apply messages from this buffer STAT64INFO_S stats_delta = {0, 0}; uint64_t workdone_this_ancestor = 0; + int64_t logical_rows_delta = 0; uint32_t stale_lbi, stale_ube; if (!bn->stale_ancestor_messages_applied) { @@ -470,7 +471,7 @@ static void bnc_apply_messages_to_basement_node( gc_info, &workdone_this_ancestor, &stats_delta, - logical_rows_delta); + &logical_rows_delta); } } else if (stale_lbi == stale_ube) { // No stale messages to apply, we just apply fresh messages, and mark @@ -482,7 +483,7 @@ static void bnc_apply_messages_to_basement_node( .gc_info = gc_info, .workdone = &workdone_this_ancestor, .stats_to_update = &stats_delta, - .logical_rows_delta = logical_rows_delta}; + .logical_rows_delta = &logical_rows_delta}; if (fresh_ube - fresh_lbi > 0) *msgs_applied = true; r = bnc->fresh_message_tree @@ -503,7 +504,7 @@ static void bnc_apply_messages_to_basement_node( .gc_info = gc_info, .workdone = &workdone_this_ancestor, .stats_to_update = &stats_delta, - .logical_rows_delta = logical_rows_delta}; + .logical_rows_delta = &logical_rows_delta}; r = bnc->stale_message_tree .iterate_on_rangeft->in_memory_stats, stats_delta); } + toku_ft_adjust_logical_row_count(t->ft, logical_rows_delta); + bn->logical_rows_delta += logical_rows_delta; } static void @@ -534,7 +537,6 @@ apply_ancestors_messages_to_bn( bool* msgs_applied ) { - int64_t logical_rows_delta = 0; BASEMENTNODE curr_bn = BLB(node, childnum); const pivot_bounds curr_bounds = bounds.next_bounds(node, childnum); for (ANCESTORS curr_ancestors = ancestors; curr_ancestors; curr_ancestors = curr_ancestors->next) { @@ -547,16 +549,13 @@ apply_ancestors_messages_to_bn( curr_ancestors->childnum, curr_bounds, gc_info, - msgs_applied, - &logical_rows_delta + msgs_applied ); // We don't want to check this ancestor node again if the // next time we query it, the msn hasn't changed. curr_bn->max_msn_applied = curr_ancestors->node->max_msn_applied_to_node_on_disk; } } - toku_ft_adjust_logical_row_count(t->ft, logical_rows_delta); - node->logical_rows_delta += logical_rows_delta; // At this point, we know all the stale messages above this // basement node have been applied, and any new messages will be // fresh, so we don't need to look at stale messages for this diff --git a/storage/tokudb/PerconaFT/ft/node.h b/storage/tokudb/PerconaFT/ft/node.h index db189e36d59..05c8a44ebed 100644 --- a/storage/tokudb/PerconaFT/ft/node.h +++ b/storage/tokudb/PerconaFT/ft/node.h @@ -175,11 +175,6 @@ struct ftnode { int height; int dirty; uint32_t fullhash; - // current count of rows add or removed as a result of message application - // to this node as a basement, irrelevant for internal nodes, gets reset - // when node is undirtied. Used to back out tree scoped LRC id node is - // evicted but not persisted - int64_t logical_rows_delta; // for internal nodes, if n_children==fanout+1 then the tree needs to be // rebalanced. for leaf nodes, represents number of basement nodes @@ -211,6 +206,10 @@ struct ftnode_leaf_basement_node { unsigned int seqinsert; // number of sequential inserts to this leaf MSN max_msn_applied; // max message sequence number applied bool stale_ancestor_messages_applied; + // current count of rows added or removed as a result of message application + // to this basement node, gets reset when node is undirtied. + // Used to back out tree scoped LRC id node is evicted but not persisted + int64_t logical_rows_delta; STAT64INFO_S stat64_delta; // change in stat64 counters since basement was last written to disk }; typedef struct ftnode_leaf_basement_node *BASEMENTNODE; @@ -385,6 +384,16 @@ enum reactivity toku_ftnode_get_reactivity(FT ft, FTNODE node); enum reactivity toku_ftnode_get_nonleaf_reactivity(FTNODE node, unsigned int fanout); enum reactivity toku_ftnode_get_leaf_reactivity(FTNODE node, uint32_t nodesize); +inline const char* toku_ftnode_get_cachefile_fname_in_env(FTNODE node) { + if (node->ct_pair) { + CACHEFILE cf = toku_pair_get_cachefile(node->ct_pair); + if (cf) { + return toku_cachefile_fname_in_env(cf); + } + } + return nullptr; +} + /** * Finds the next child for HOT to flush to, given that everything up to * and including k has been flattened. @@ -577,3 +586,4 @@ static inline void set_BSB(FTNODE node, int i, struct sub_block *sb) { #define BLB_DATA(node,i) (&(BLB(node,i)->data_buffer)) #define BLB_NBYTESINDATA(node,i) (BLB_DATA(node,i)->get_disk_size()) #define BLB_SEQINSERT(node,i) (BLB(node,i)->seqinsert) +#define BLB_LRD(node, i) (BLB(node,i)->logical_rows_delta) diff --git a/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc b/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc index 8fcb5293412..fcab9fc675e 100644 --- a/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc +++ b/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.cc @@ -644,7 +644,29 @@ exit: // Read ft from file into struct. Read both headers and use one. // We want the latest acceptable header whose checkpoint_lsn is no later // than max_acceptable_lsn. -int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft) { +#define dump_state_of_toku_deserialize_ft_from() \ + fprintf(stderr, \ + "%s:%d toku_deserialize_ft_from: " \ + "filename[%s] " \ + "r[%d] max_acceptable_lsn[%lu]" \ + "r0[%d] checkpoint_lsn_0[%lu] checkpoint_count_0[%lu] " \ + "r1[%d] checkpoint_lsn_1[%lu] checkpoint_count_1[%lu]\n", \ + __FILE__, \ + __LINE__, \ + fn, \ + r, \ + max_acceptable_lsn.lsn, \ + r0, \ + checkpoint_lsn_0.lsn, \ + checkpoint_count_0, \ + r1, \ + checkpoint_lsn_1.lsn, \ + checkpoint_count_1); + +int toku_deserialize_ft_from(int fd, + const char *fn, + LSN max_acceptable_lsn, + FT *ft) { struct rbuf rb_0; struct rbuf rb_1; uint64_t checkpoint_count_0 = 0; @@ -655,7 +677,7 @@ int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft) { bool h0_acceptable = false; bool h1_acceptable = false; struct rbuf *rb = NULL; - int r0, r1, r; + int r0, r1, r = 0; toku_off_t header_0_off = 0; r0 = deserialize_ft_from_fd_into_rbuf(fd, @@ -702,6 +724,10 @@ int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft) { // first header, unless it's readable } + if (r != TOKUDB_DICTIONARY_NO_HEADER) { + dump_state_of_toku_deserialize_ft_from(); + } + // it should not be possible for both headers to be later than the // max_acceptable_lsn invariant( @@ -713,11 +739,19 @@ int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft) { if (h0_acceptable && h1_acceptable) { if (checkpoint_count_0 > checkpoint_count_1) { + if (!(checkpoint_count_0 == checkpoint_count_1 + 1) || + !(version_0 >= version_1)) { + dump_state_of_toku_deserialize_ft_from(); + } invariant(checkpoint_count_0 == checkpoint_count_1 + 1); invariant(version_0 >= version_1); rb = &rb_0; version = version_0; } else { + if (!(checkpoint_count_1 == checkpoint_count_0 + 1) || + !(version_1 >= version_0)) { + dump_state_of_toku_deserialize_ft_from(); + } invariant(checkpoint_count_1 == checkpoint_count_0 + 1); invariant(version_1 >= version_0); rb = &rb_1; @@ -729,6 +763,7 @@ int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft) { fprintf( stderr, "Header 2 checksum failed, but header 1 ok. Proceeding.\n"); + dump_state_of_toku_deserialize_ft_from(); } rb = &rb_0; version = version_0; @@ -738,11 +773,15 @@ int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft) { fprintf( stderr, "Header 1 checksum failed, but header 2 ok. Proceeding.\n"); + dump_state_of_toku_deserialize_ft_from(); } rb = &rb_1; version = version_1; } + if (!rb) { + dump_state_of_toku_deserialize_ft_from(); + } paranoid_invariant(rb); r = deserialize_ft_versioned(fd, rb, ft, version); diff --git a/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.h b/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.h index fe31ff7c5fd..144e188566c 100644 --- a/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.h +++ b/storage/tokudb/PerconaFT/ft/serialize/ft-serialize.h @@ -42,12 +42,23 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. #include "ft/serialize/block_table.h" size_t toku_serialize_ft_size(struct ft_header *h); -void toku_serialize_ft_to(int fd, struct ft_header *h, block_table *bt, CACHEFILE cf); -void toku_serialize_ft_to_wbuf(struct wbuf *wbuf, struct ft_header *h, DISKOFF translation_location_on_disk, DISKOFF translation_size_on_disk); -void toku_serialize_descriptor_contents_to_fd(int fd, DESCRIPTOR desc, DISKOFF offset); -void toku_serialize_descriptor_contents_to_wbuf(struct wbuf *wb, DESCRIPTOR desc); - -int toku_deserialize_ft_from(int fd, LSN max_acceptable_lsn, FT *ft); +void toku_serialize_ft_to(int fd, + struct ft_header *h, + block_table *bt, + CACHEFILE cf); +void toku_serialize_ft_to_wbuf(struct wbuf *wbuf, + struct ft_header *h, + DISKOFF translation_location_on_disk, + DISKOFF translation_size_on_disk); +void toku_serialize_descriptor_contents_to_fd(int fd, + DESCRIPTOR desc, + DISKOFF offset); +void toku_serialize_descriptor_contents_to_wbuf(struct wbuf *wb, + DESCRIPTOR desc); +int toku_deserialize_ft_from(int fd, + const char *fn, + LSN max_acceptable_lsn, + FT *ft); // TODO rename int deserialize_ft_from_fd_into_rbuf(int fd, diff --git a/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc b/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc index 56876b474d4..55899905baf 100644 --- a/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc +++ b/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.cc @@ -830,6 +830,13 @@ int toku_serialize_ftnode_to(int fd, node->dirty = 0; // See #1957. Must set the node to be clean after // serializing it so that it doesn't get written again on // the next checkpoint or eviction. + if (node->height == 0) { + for (int i = 0; i < node->n_children; i++) { + if (BP_STATE(node, i) == PT_AVAIL) { + BLB_LRD(node, i) = 0; + } + } + } return 0; } @@ -996,6 +1003,7 @@ BASEMENTNODE toku_clone_bn(BASEMENTNODE orig_bn) { bn->seqinsert = orig_bn->seqinsert; bn->stale_ancestor_messages_applied = orig_bn->stale_ancestor_messages_applied; bn->stat64_delta = orig_bn->stat64_delta; + bn->logical_rows_delta = orig_bn->logical_rows_delta; bn->data_buffer.clone(&orig_bn->data_buffer); return bn; } @@ -1006,6 +1014,7 @@ BASEMENTNODE toku_create_empty_bn_no_buffer(void) { bn->seqinsert = 0; bn->stale_ancestor_messages_applied = false; bn->stat64_delta = ZEROSTATS; + bn->logical_rows_delta = 0; bn->data_buffer.init_zero(); return bn; } @@ -1149,15 +1158,25 @@ just_decompress_sub_block(struct sub_block *sb) } // verify the checksum -int -verify_ftnode_sub_block (struct sub_block *sb) -{ +int verify_ftnode_sub_block(struct sub_block *sb, + const char *fname, + BLOCKNUM blocknum) { int r = 0; // first verify the checksum uint32_t data_size = sb->uncompressed_size - 4; // checksum is 4 bytes at end uint32_t stored_xsum = toku_dtoh32(*((uint32_t *)((char *)sb->uncompressed_ptr + data_size))); uint32_t actual_xsum = toku_x1764_memory(sb->uncompressed_ptr, data_size); if (stored_xsum != actual_xsum) { + fprintf( + stderr, + "%s:%d:verify_ftnode_sub_block - " + "file[%s], blocknum[%ld], stored_xsum[%u] != actual_xsum[%u]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + stored_xsum, + actual_xsum); dump_bad_block((Bytef *) sb->uncompressed_ptr, sb->uncompressed_size); r = TOKUDB_BAD_CHECKSUM; } @@ -1165,19 +1184,27 @@ verify_ftnode_sub_block (struct sub_block *sb) } // This function deserializes the data stored by serialize_ftnode_info -static int -deserialize_ftnode_info( - struct sub_block *sb, - FTNODE node - ) -{ +static int deserialize_ftnode_info(struct sub_block *sb, FTNODE node) { + // sb_node_info->uncompressed_ptr stores the serialized node information // this function puts that information into node // first verify the checksum int r = 0; - r = verify_ftnode_sub_block(sb); + const char *fname = toku_ftnode_get_cachefile_fname_in_env(node); + r = verify_ftnode_sub_block(sb, fname, node->blocknum); if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_info - " + "file[%s], blocknum[%ld], verify_ftnode_sub_block failed with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + r); + dump_bad_block(static_cast(sb->uncompressed_ptr), + sb->uncompressed_size); goto exit; } @@ -1223,6 +1250,16 @@ deserialize_ftnode_info( // make sure that all the data was read if (data_size != rb.ndone) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_info - " + "file[%s], blocknum[%ld], data_size[%d] != rb.ndone[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + data_size, + rb.ndone); dump_bad_block(rb.buf, rb.size); abort(); } @@ -1339,17 +1376,25 @@ static void setup_ftnode_partitions(FTNODE node, ftnode_fetch_extra *bfe, bool d /* deserialize the partition from the sub-block's uncompressed buffer * and destroy the uncompressed buffer */ -static int -deserialize_ftnode_partition( +static int deserialize_ftnode_partition( struct sub_block *sb, FTNODE node, - int childnum, // which partition to deserialize - const toku::comparator &cmp - ) -{ + int childnum, // which partition to deserialize + const toku::comparator &cmp) { + int r = 0; - r = verify_ftnode_sub_block(sb); + const char *fname = toku_ftnode_get_cachefile_fname_in_env(node); + r = verify_ftnode_sub_block(sb, fname, node->blocknum); if (r != 0) { + fprintf(stderr, + "%s:%d:deserialize_ftnode_partition - " + "file[%s], blocknum[%ld], " + "verify_ftnode_sub_block failed with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + r); goto exit; } uint32_t data_size; @@ -1362,7 +1407,20 @@ deserialize_ftnode_partition( ch = rbuf_char(&rb); if (node->height > 0) { - assert(ch == FTNODE_PARTITION_MSG_BUFFER); + if (ch != FTNODE_PARTITION_MSG_BUFFER) { + fprintf(stderr, + "%s:%d:deserialize_ftnode_partition - " + "file[%s], blocknum[%ld], ch[%d] != " + "FTNODE_PARTITION_MSG_BUFFER[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + ch, + FTNODE_PARTITION_MSG_BUFFER); + dump_bad_block(rb.buf, rb.size); + assert(ch == FTNODE_PARTITION_MSG_BUFFER); + } NONLEAF_CHILDINFO bnc = BNC(node, childnum); if (node->layout_version_read_from_disk <= FT_LAYOUT_VERSION_26) { // Layout version <= 26 did not serialize sorted message trees to disk. @@ -1371,43 +1429,99 @@ deserialize_ftnode_partition( deserialize_child_buffer(bnc, &rb); } BP_WORKDONE(node, childnum) = 0; - } - else { - assert(ch == FTNODE_PARTITION_DMT_LEAVES); + } else { + if (ch != FTNODE_PARTITION_DMT_LEAVES) { + fprintf(stderr, + "%s:%d:deserialize_ftnode_partition - " + "file[%s], blocknum[%ld], ch[%d] != " + "FTNODE_PARTITION_DMT_LEAVES[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + ch, + FTNODE_PARTITION_DMT_LEAVES); + dump_bad_block(rb.buf, rb.size); + assert(ch == FTNODE_PARTITION_DMT_LEAVES); + } + BLB_SEQINSERT(node, childnum) = 0; uint32_t num_entries = rbuf_int(&rb); // we are now at the first byte of first leafentry data_size -= rb.ndone; // remaining bytes of leafentry data BASEMENTNODE bn = BLB(node, childnum); - bn->data_buffer.deserialize_from_rbuf(num_entries, &rb, data_size, node->layout_version_read_from_disk); + bn->data_buffer.deserialize_from_rbuf( + num_entries, &rb, data_size, node->layout_version_read_from_disk); + } + if (rb.ndone != rb.size) { + fprintf(stderr, + "%s:%d:deserialize_ftnode_partition - " + "file[%s], blocknum[%ld], rb.ndone[%d] != rb.size[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + rb.ndone, + rb.size); + dump_bad_block(rb.buf, rb.size); + assert(rb.ndone == rb.size); } - assert(rb.ndone == rb.size); + exit: return r; } -static int -decompress_and_deserialize_worker(struct rbuf curr_rbuf, struct sub_block curr_sb, FTNODE node, int child, - const toku::comparator &cmp, tokutime_t *decompress_time) -{ +static int decompress_and_deserialize_worker(struct rbuf curr_rbuf, + struct sub_block curr_sb, + FTNODE node, + int child, + const toku::comparator &cmp, + tokutime_t *decompress_time) { int r = 0; tokutime_t t0 = toku_time_now(); r = read_and_decompress_sub_block(&curr_rbuf, &curr_sb); - tokutime_t t1 = toku_time_now(); - if (r == 0) { - // at this point, sb->uncompressed_ptr stores the serialized node partition - r = deserialize_ftnode_partition(&curr_sb, node, child, cmp); + if (r != 0) { + const char *fname = toku_ftnode_get_cachefile_fname_in_env(node); + fprintf(stderr, + "%s:%d:decompress_and_deserialize_worker - " + "file[%s], blocknum[%ld], read_and_decompress_sub_block failed " + "with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + r); + dump_bad_block(curr_rbuf.buf, curr_rbuf.size); + goto exit; + } + *decompress_time = toku_time_now() - t0; + // at this point, sb->uncompressed_ptr stores the serialized node partition + r = deserialize_ftnode_partition(&curr_sb, node, child, cmp); + if (r != 0) { + const char *fname = toku_ftnode_get_cachefile_fname_in_env(node); + fprintf(stderr, + "%s:%d:decompress_and_deserialize_worker - " + "file[%s], blocknum[%ld], deserialize_ftnode_partition failed " + "with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + r); + dump_bad_block(curr_rbuf.buf, curr_rbuf.size); + goto exit; } - *decompress_time = t1 - t0; +exit: toku_free(curr_sb.uncompressed_ptr); return r; } -static int -check_and_copy_compressed_sub_block_worker(struct rbuf curr_rbuf, struct sub_block curr_sb, FTNODE node, int child) -{ +static int check_and_copy_compressed_sub_block_worker(struct rbuf curr_rbuf, + struct sub_block curr_sb, + FTNODE node, + int child) { int r = 0; r = read_compressed_sub_block(&curr_rbuf, &curr_sb); if (r != 0) { @@ -1419,7 +1533,8 @@ check_and_copy_compressed_sub_block_worker(struct rbuf curr_rbuf, struct sub_blo bp_sb->compressed_size = curr_sb.compressed_size; bp_sb->uncompressed_size = curr_sb.uncompressed_size; bp_sb->compressed_ptr = toku_xmalloc(bp_sb->compressed_size); - memcpy(bp_sb->compressed_ptr, curr_sb.compressed_ptr, bp_sb->compressed_size); + memcpy( + bp_sb->compressed_ptr, curr_sb.compressed_ptr, bp_sb->compressed_size); exit: return r; } @@ -1430,35 +1545,50 @@ static FTNODE alloc_ftnode_for_deserialize(uint32_t fullhash, BLOCKNUM blocknum) node->fullhash = fullhash; node->blocknum = blocknum; node->dirty = 0; - node->logical_rows_delta = 0; - node->bp = nullptr; node->oldest_referenced_xid_known = TXNID_NONE; + node->bp = nullptr; + node->ct_pair = nullptr; return node; } -static int -deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, - FTNODE_DISK_DATA* ndd, - BLOCKNUM blocknum, - uint32_t fullhash, - ftnode_fetch_extra *bfe, - struct rbuf *rb, - int fd) +static int deserialize_ftnode_header_from_rbuf_if_small_enough( + FTNODE *ftnode, + FTNODE_DISK_DATA *ndd, + BLOCKNUM blocknum, + uint32_t fullhash, + ftnode_fetch_extra *bfe, + struct rbuf *rb, + int fd) // If we have enough information in the rbuf to construct a header, then do so. // Also fetch in the basement node if needed. -// Return 0 if it worked. If something goes wrong (including that we are looking at some old data format that doesn't have partitions) then return nonzero. +// Return 0 if it worked. If something goes wrong (including that we are +// looking at some old data format that doesn't have partitions) then return +// nonzero. { int r = 0; tokutime_t t0, t1; tokutime_t decompress_time = 0; tokutime_t deserialize_time = 0; + // we must get the name from bfe and not through + // toku_ftnode_get_cachefile_fname_in_env as the node is not set up yet + const char* fname = toku_cachefile_fname_in_env(bfe->ft->cf); t0 = toku_time_now(); FTNODE node = alloc_ftnode_for_deserialize(fullhash, blocknum); if (rb->size < 24) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], rb->size[%u] < 24\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + rb->size); + dump_bad_block(rb->buf, rb->size); // TODO: What error do we return here? // Does it even matter? r = toku_db_badformat(); @@ -1467,14 +1597,45 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, const void *magic; rbuf_literal_bytes(rb, &magic, 8); - if (memcmp(magic, "tokuleaf", 8)!=0 && - memcmp(magic, "tokunode", 8)!=0) { + if (memcmp(magic, "tokuleaf", 8) != 0 && + memcmp(magic, "tokunode", 8) != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], unrecognized magic number " + "%2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + static_cast(magic)[0], + static_cast(magic)[1], + static_cast(magic)[2], + static_cast(magic)[3], + static_cast(magic)[4], + static_cast(magic)[5], + static_cast(magic)[6], + static_cast(magic)[7]); + dump_bad_block(rb->buf, rb->size); r = toku_db_badformat(); goto cleanup; } node->layout_version_read_from_disk = rbuf_int(rb); - if (node->layout_version_read_from_disk < FT_FIRST_LAYOUT_VERSION_WITH_BASEMENT_NODES) { + if (node->layout_version_read_from_disk < + FT_FIRST_LAYOUT_VERSION_WITH_BASEMENT_NODES) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], node->layout_version_read_from_disk[%d] " + "< FT_FIRST_LAYOUT_VERSION_WITH_BASEMENT_NODES[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + node->layout_version_read_from_disk, + FT_FIRST_LAYOUT_VERSION_WITH_BASEMENT_NODES); + dump_bad_block(rb->buf, rb->size); // This code path doesn't have to worry about upgrade. r = toku_db_badformat(); goto cleanup; @@ -1496,10 +1657,24 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, // is too big, we may have a problem, so check that we won't overflow // while reading the partition locations. unsigned int nhsize; - nhsize = serialize_node_header_size(node); // we can do this because n_children is filled in. + // we can do this because n_children is filled in. + nhsize = serialize_node_header_size(node); unsigned int needed_size; - needed_size = nhsize + 12; // we need 12 more so that we can read the compressed block size information that follows for the nodeinfo. + // we need 12 more so that we can read the compressed block size information + // that follows for the nodeinfo. + needed_size = nhsize + 12; if (needed_size > rb->size) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], needed_size[%d] > rb->size[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + needed_size, + rb->size); + dump_bad_block(rb->buf, rb->size); r = toku_db_badformat(); goto cleanup; } @@ -1517,6 +1692,16 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, uint32_t stored_checksum; stored_checksum = rbuf_int(rb); if (stored_checksum != checksum) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], stored_checksum[%d] != checksum[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + stored_checksum, + checksum); dump_bad_block(rb->buf, rb->size); r = TOKUDB_BAD_CHECKSUM; goto cleanup; @@ -1525,9 +1710,23 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, // Now we want to read the pivot information. struct sub_block sb_node_info; sub_block_init(&sb_node_info); - sb_node_info.compressed_size = rbuf_int(rb); // we'll be able to read these because we checked the size earlier. + // we'll be able to read these because we checked the size earlier. + sb_node_info.compressed_size = rbuf_int(rb); sb_node_info.uncompressed_size = rbuf_int(rb); - if (rb->size-rb->ndone < sb_node_info.compressed_size + 8) { + if (rb->size - rb->ndone < sb_node_info.compressed_size + 8) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], rb->size[%d] - rb->ndone[%d] < " + "sb_node_info.compressed_size[%d] + 8\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + rb->size, + rb->ndone, + sb_node_info.compressed_size); + dump_bad_block(rb->buf, rb->size); r = toku_db_badformat(); goto cleanup; } @@ -1539,8 +1738,20 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, sb_node_info.xsum = rbuf_int(rb); // let's check the checksum uint32_t actual_xsum; - actual_xsum = toku_x1764_memory((char *)sb_node_info.compressed_ptr-8, 8+sb_node_info.compressed_size); + actual_xsum = toku_x1764_memory((char *)sb_node_info.compressed_ptr - 8, + 8 + sb_node_info.compressed_size); if (sb_node_info.xsum != actual_xsum) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], sb_node_info.xsum[%d] != actual_xsum[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + sb_node_info.xsum, + actual_xsum); + dump_bad_block(rb->buf, rb->size); r = TOKUDB_BAD_CHECKSUM; goto cleanup; } @@ -1550,18 +1761,30 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, toku::scoped_malloc sb_node_info_buf(sb_node_info.uncompressed_size); sb_node_info.uncompressed_ptr = sb_node_info_buf.get(); tokutime_t decompress_t0 = toku_time_now(); - toku_decompress( - (Bytef *) sb_node_info.uncompressed_ptr, - sb_node_info.uncompressed_size, - (Bytef *) sb_node_info.compressed_ptr, - sb_node_info.compressed_size - ); + toku_decompress((Bytef *)sb_node_info.uncompressed_ptr, + sb_node_info.uncompressed_size, + (Bytef *)sb_node_info.compressed_ptr, + sb_node_info.compressed_size); tokutime_t decompress_t1 = toku_time_now(); decompress_time = decompress_t1 - decompress_t0; // at this point sb->uncompressed_ptr stores the serialized node info. r = deserialize_ftnode_info(&sb_node_info, node); if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], deserialize_ftnode_info failed with " + "%d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); + dump_bad_block( + static_cast(sb_node_info.uncompressed_ptr), + sb_node_info.uncompressed_size); + dump_bad_block(rb->buf, rb->size); goto cleanup; } } @@ -1586,6 +1809,17 @@ deserialize_ftnode_header_from_rbuf_if_small_enough (FTNODE *ftnode, PAIR_ATTR attr; r = toku_ftnode_pf_callback(node, *ndd, bfe, fd, &attr); if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_header_from_rbuf_if_small_enough - " + "file[%s], blocknum[%ld], toku_ftnode_pf_callback failed with " + "%d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); + dump_bad_block(rb->buf, rb->size); goto cleanup; } } @@ -1622,12 +1856,10 @@ cleanup: // that did not generate MSN's for messages. These new MSN's are // generated from the root downwards, counting backwards from MIN_MSN // and persisted in the ft header. -static int -deserialize_and_upgrade_internal_node(FTNODE node, - struct rbuf *rb, - ftnode_fetch_extra *bfe, - STAT64INFO info) -{ +static int deserialize_and_upgrade_internal_node(FTNODE node, + struct rbuf *rb, + ftnode_fetch_extra *bfe, + STAT64INFO info) { int version = node->layout_version_read_from_disk; if (version == FT_LAST_LAYOUT_VERSION_WITH_FINGERPRINT) { @@ -1892,25 +2124,25 @@ deserialize_and_upgrade_leaf_node(FTNODE node, return r; } -static int -read_and_decompress_block_from_fd_into_rbuf(int fd, BLOCKNUM blocknum, - DISKOFF offset, DISKOFF size, - FT ft, - struct rbuf *rb, - /* out */ int *layout_version_p); +static int read_and_decompress_block_from_fd_into_rbuf( + int fd, + BLOCKNUM blocknum, + DISKOFF offset, + DISKOFF size, + FT ft, + struct rbuf *rb, + /* out */ int *layout_version_p); // This function upgrades a version 14 or 13 ftnode to the current // version. NOTE: This code assumes the first field of the rbuf has // already been read from the buffer (namely the layout_version of the // ftnode.) -static int -deserialize_and_upgrade_ftnode(FTNODE node, - FTNODE_DISK_DATA* ndd, - BLOCKNUM blocknum, - ftnode_fetch_extra *bfe, - STAT64INFO info, - int fd) -{ +static int deserialize_and_upgrade_ftnode(FTNODE node, + FTNODE_DISK_DATA *ndd, + BLOCKNUM blocknum, + ftnode_fetch_extra *bfe, + STAT64INFO info, + int fd) { int r = 0; int version; @@ -1929,6 +2161,16 @@ deserialize_and_upgrade_ftnode(FTNODE node, &rb, &version); if (r != 0) { + const char* fname = toku_cachefile_fname_in_env(bfe->ft->cf); + fprintf(stderr, + "%s:%d:deserialize_and_upgrade_ftnode - " + "file[%s], blocknum[%ld], " + "read_and_decompress_block_from_fd_into_rbuf failed with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); goto exit; } @@ -1944,6 +2186,21 @@ deserialize_and_upgrade_ftnode(FTNODE node, // Copy over old version info. node->layout_version_read_from_disk = rbuf_int(&rb); // 2. layout version version = node->layout_version_read_from_disk; + if (version > FT_LAYOUT_VERSION_14) { + const char* fname = toku_cachefile_fname_in_env(bfe->ft->cf); + fprintf(stderr, + "%s:%d:deserialize_and_upgrade_ftnode - " + "file[%s], blocknum[%ld], version[%d] > " + "FT_LAYOUT_VERSION_14[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + version, + FT_LAYOUT_VERSION_14); + dump_bad_block(rb.buf, rb.size); + goto exit; + } assert(version <= FT_LAYOUT_VERSION_14); // Upgrade the current version number to the current version. node->layout_version = FT_LAYOUT_VERSION; @@ -1991,25 +2248,23 @@ exit: return r; } -static int -deserialize_ftnode_from_rbuf( - FTNODE *ftnode, - FTNODE_DISK_DATA* ndd, - BLOCKNUM blocknum, - uint32_t fullhash, - ftnode_fetch_extra *bfe, - STAT64INFO info, - struct rbuf *rb, - int fd - ) -// Effect: deserializes a ftnode that is in rb (with pointer of rb just past the magic) into a FTNODE. -{ +// Effect: deserializes a ftnode that is in rb (with pointer of rb just past the +// magic) into a FTNODE. +static int deserialize_ftnode_from_rbuf(FTNODE *ftnode, + FTNODE_DISK_DATA *ndd, + BLOCKNUM blocknum, + uint32_t fullhash, + ftnode_fetch_extra *bfe, + STAT64INFO info, + struct rbuf *rb, + int fd) { int r = 0; struct sub_block sb_node_info; tokutime_t t0, t1; tokutime_t decompress_time = 0; tokutime_t deserialize_time = 0; + const char* fname = toku_cachefile_fname_in_env(bfe->ft->cf); t0 = toku_time_now(); @@ -2019,8 +2274,26 @@ deserialize_ftnode_from_rbuf( // first thing we do is read the header information const void *magic; rbuf_literal_bytes(rb, &magic, 8); - if (memcmp(magic, "tokuleaf", 8)!=0 && - memcmp(magic, "tokunode", 8)!=0) { + if (memcmp(magic, "tokuleaf", 8) != 0 && + memcmp(magic, "tokunode", 8) != 0) { + fprintf(stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], unrecognized magic number " + "%2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + static_cast(magic)[0], + static_cast(magic)[1], + static_cast(magic)[2], + static_cast(magic)[3], + static_cast(magic)[4], + static_cast(magic)[5], + static_cast(magic)[6], + static_cast(magic)[7]); + dump_bad_block(rb->buf, rb->size); + r = toku_db_badformat(); goto cleanup; } @@ -2034,6 +2307,16 @@ deserialize_ftnode_from_rbuf( // Perform the upgrade. r = deserialize_and_upgrade_ftnode(node, ndd, blocknum, bfe, info, fd); if (r != 0) { + fprintf(stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], deserialize_and_upgrade_ftnode " + "failed with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); + dump_bad_block(rb->buf, rb->size); goto cleanup; } @@ -2069,6 +2352,16 @@ deserialize_ftnode_from_rbuf( uint32_t stored_checksum; stored_checksum = rbuf_int(rb); if (stored_checksum != checksum) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], stored_checksum[%d] != checksum[%d]\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + stored_checksum, + checksum); dump_bad_block(rb->buf, rb->size); invariant(stored_checksum == checksum); } @@ -2080,34 +2373,61 @@ deserialize_ftnode_from_rbuf( r = read_and_decompress_sub_block(rb, &sb_node_info); tokutime_t sb_decompress_t1 = toku_time_now(); decompress_time += sb_decompress_t1 - sb_decompress_t0; - } - if (r != 0) { - goto cleanup; + if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], read_and_decompress_sub_block failed " + "with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); + dump_bad_block( + static_cast(sb_node_info.uncompressed_ptr), + sb_node_info.uncompressed_size); + dump_bad_block(rb->buf, rb->size); + goto cleanup; + } } // at this point, sb->uncompressed_ptr stores the serialized node info r = deserialize_ftnode_info(&sb_node_info, node); if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], deserialize_ftnode_info failed with " + "%d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); + dump_bad_block(rb->buf, rb->size); goto cleanup; } toku_free(sb_node_info.uncompressed_ptr); - // now that the node info has been deserialized, we can proceed to deserialize - // the individual sub blocks + // now that the node info has been deserialized, we can proceed to + // deserialize the individual sub blocks // setup the memory of the partitions - // for partitions being decompressed, create either message buffer or basement node + // for partitions being decompressed, create either message buffer or + // basement node // for partitions staying compressed, create sub_block setup_ftnode_partitions(node, bfe, true); - // This loop is parallelizeable, since we don't have a dependency on the work done so far. + // This loop is parallelizeable, since we don't have a dependency on the + // work done so far. for (int i = 0; i < node->n_children; i++) { - uint32_t curr_offset = BP_START(*ndd,i); - uint32_t curr_size = BP_SIZE(*ndd,i); - // the compressed, serialized partitions start at where rb is currently pointing, - // which would be rb->buf + rb->ndone + uint32_t curr_offset = BP_START(*ndd, i); + uint32_t curr_size = BP_SIZE(*ndd, i); + // the compressed, serialized partitions start at where rb is currently + // pointing, which would be rb->buf + rb->ndone // we need to intialize curr_rbuf to point to this place - struct rbuf curr_rbuf = {.buf = NULL, .size = 0, .ndone = 0}; + struct rbuf curr_rbuf = {.buf = nullptr, .size = 0, .ndone = 0}; rbuf_init(&curr_rbuf, rb->buf + curr_offset, curr_size); // @@ -2120,26 +2440,45 @@ deserialize_ftnode_from_rbuf( // of the compressed partitions (also possibly none or possibly all) // The partitions that we want to decompress and make available // to the node, we do, the rest we simply copy in compressed - // form into the node, and set the state of the partition to PT_COMPRESSED + // form into the node, and set the state of the partition to + // PT_COMPRESSED // struct sub_block curr_sb; sub_block_init(&curr_sb); - // curr_rbuf is passed by value to decompress_and_deserialize_worker, so there's no ugly race condition. + // curr_rbuf is passed by value to decompress_and_deserialize_worker, + // so there's no ugly race condition. // This would be more obvious if curr_rbuf were an array. // deserialize_ftnode_info figures out what the state // should be and sets up the memory so that we are ready to use it - switch (BP_STATE(node,i)) { - case PT_AVAIL: { + switch (BP_STATE(node, i)) { + case PT_AVAIL: { // case where we read and decompress the partition tokutime_t partition_decompress_time; - r = decompress_and_deserialize_worker(curr_rbuf, curr_sb, node, i, - bfe->ft->cmp, &partition_decompress_time); + r = decompress_and_deserialize_worker( + curr_rbuf, + curr_sb, + node, + i, + bfe->ft->cmp, + &partition_decompress_time); decompress_time += partition_decompress_time; if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], childnum[%d], " + "decompress_and_deserialize_worker failed with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + i, + r); + dump_bad_block(rb->buf, rb->size); goto cleanup; } break; @@ -2148,6 +2487,19 @@ deserialize_ftnode_from_rbuf( // case where we leave the partition in the compressed state r = check_and_copy_compressed_sub_block_worker(curr_rbuf, curr_sb, node, i); if (r != 0) { + fprintf( + stderr, + "%s:%d:deserialize_ftnode_from_rbuf - " + "file[%s], blocknum[%ld], childnum[%d], " + "check_and_copy_compressed_sub_block_worker failed with " + "%d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + i, + r); + dump_bad_block(rb->buf, rb->size); goto cleanup; } break; @@ -2259,8 +2611,10 @@ toku_deserialize_bp_from_disk(FTNODE node, FTNODE_DISK_DATA ndd, int childnum, i } // Take a ftnode partition that is in the compressed state, and make it avail -int -toku_deserialize_bp_from_compressed(FTNODE node, int childnum, ftnode_fetch_extra *bfe) { +int toku_deserialize_bp_from_compressed(FTNODE node, + int childnum, + ftnode_fetch_extra *bfe) { + int r = 0; assert(BP_STATE(node, childnum) == PT_COMPRESSED); SUB_BLOCK curr_sb = BSB(node, childnum); @@ -2275,16 +2629,30 @@ toku_deserialize_bp_from_compressed(FTNODE node, int childnum, ftnode_fetch_extr // decompress the sub_block tokutime_t t0 = toku_time_now(); - toku_decompress( - (Bytef *) curr_sb->uncompressed_ptr, - curr_sb->uncompressed_size, - (Bytef *) curr_sb->compressed_ptr, - curr_sb->compressed_size - ); + toku_decompress((Bytef *)curr_sb->uncompressed_ptr, + curr_sb->uncompressed_size, + (Bytef *)curr_sb->compressed_ptr, + curr_sb->compressed_size); tokutime_t t1 = toku_time_now(); r = deserialize_ftnode_partition(curr_sb, node, childnum, bfe->ft->cmp); + if (r != 0) { + const char* fname = toku_cachefile_fname_in_env(bfe->ft->cf); + fprintf(stderr, + "%s:%d:toku_deserialize_bp_from_compressed - " + "file[%s], blocknum[%ld], " + "deserialize_ftnode_partition failed with %d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + node->blocknum.b, + r); + dump_bad_block(static_cast(curr_sb->compressed_ptr), + curr_sb->compressed_size); + dump_bad_block(static_cast(curr_sb->uncompressed_ptr), + curr_sb->uncompressed_size); + } tokutime_t t2 = toku_time_now(); @@ -2299,26 +2667,36 @@ toku_deserialize_bp_from_compressed(FTNODE node, int childnum, ftnode_fetch_extr return r; } -static int -deserialize_ftnode_from_fd(int fd, - BLOCKNUM blocknum, - uint32_t fullhash, - FTNODE *ftnode, - FTNODE_DISK_DATA *ndd, - ftnode_fetch_extra *bfe, - STAT64INFO info) -{ +static int deserialize_ftnode_from_fd(int fd, + BLOCKNUM blocknum, + uint32_t fullhash, + FTNODE *ftnode, + FTNODE_DISK_DATA *ndd, + ftnode_fetch_extra *bfe, + STAT64INFO info) { struct rbuf rb = RBUF_INITIALIZER; tokutime_t t0 = toku_time_now(); - read_block_from_fd_into_rbuf(fd, blocknum, bfe->ft, &rb); + read_block_from_fd_into_rbuf(fd, blocknum, bfe->ft, &rb); tokutime_t t1 = toku_time_now(); // Decompress and deserialize the ftnode. Time statistics // are taken inside this function. - int r = deserialize_ftnode_from_rbuf(ftnode, ndd, blocknum, fullhash, bfe, info, &rb, fd); + int r = deserialize_ftnode_from_rbuf( + ftnode, ndd, blocknum, fullhash, bfe, info, &rb, fd); if (r != 0) { - dump_bad_block(rb.buf,rb.size); + const char* fname = toku_cachefile_fname_in_env(bfe->ft->cf); + fprintf( + stderr, + "%s:%d:deserialize_ftnode_from_fd - " + "file[%s], blocknum[%ld], deserialize_ftnode_from_rbuf failed with " + "%d\n", + __FILE__, + __LINE__, + fname ? fname : "unknown", + blocknum.b, + r); + dump_bad_block(rb.buf, rb.size); } bfe->bytes_read = rb.size; @@ -2327,32 +2705,33 @@ deserialize_ftnode_from_fd(int fd, return r; } -// Read ftnode from file into struct. Perform version upgrade if necessary. -int -toku_deserialize_ftnode_from (int fd, - BLOCKNUM blocknum, - uint32_t fullhash, - FTNODE *ftnode, - FTNODE_DISK_DATA* ndd, - ftnode_fetch_extra *bfe - ) // Effect: Read a node in. If possible, read just the header. -{ +// Perform version upgrade if necessary. +int toku_deserialize_ftnode_from(int fd, + BLOCKNUM blocknum, + uint32_t fullhash, + FTNODE *ftnode, + FTNODE_DISK_DATA *ndd, + ftnode_fetch_extra *bfe) { int r = 0; struct rbuf rb = RBUF_INITIALIZER; - // each function below takes the appropriate io/decompression/deserialize statistics + // each function below takes the appropriate io/decompression/deserialize + // statistics if (!bfe->read_all_partitions) { - read_ftnode_header_from_fd_into_rbuf_if_small_enough(fd, blocknum, bfe->ft, &rb, bfe); - r = deserialize_ftnode_header_from_rbuf_if_small_enough(ftnode, ndd, blocknum, fullhash, bfe, &rb, fd); + read_ftnode_header_from_fd_into_rbuf_if_small_enough( + fd, blocknum, bfe->ft, &rb, bfe); + r = deserialize_ftnode_header_from_rbuf_if_small_enough( + ftnode, ndd, blocknum, fullhash, bfe, &rb, fd); } else { // force us to do it the old way r = -1; } if (r != 0) { // Something went wrong, go back to doing it the old way. - r = deserialize_ftnode_from_fd(fd, blocknum, fullhash, ftnode, ndd, bfe, NULL); + r = deserialize_ftnode_from_fd( + fd, blocknum, fullhash, ftnode, ndd, bfe, nullptr); } toku_free(rb.buf); @@ -2722,12 +3101,14 @@ static int decompress_from_raw_block_into_rbuf_versioned(uint32_t version, uint8 return r; } -static int -read_and_decompress_block_from_fd_into_rbuf(int fd, BLOCKNUM blocknum, - DISKOFF offset, DISKOFF size, - FT ft, - struct rbuf *rb, - /* out */ int *layout_version_p) { +static int read_and_decompress_block_from_fd_into_rbuf( + int fd, + BLOCKNUM blocknum, + DISKOFF offset, + DISKOFF size, + FT ft, + struct rbuf *rb, + /* out */ int *layout_version_p) { int r = 0; if (0) printf("Deserializing Block %" PRId64 "\n", blocknum.b); diff --git a/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.h b/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.h index 3ad616053e9..678139655f0 100644 --- a/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.h +++ b/storage/tokudb/PerconaFT/ft/serialize/ft_node-serialize.h @@ -46,21 +46,51 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. #include "ft/serialize/block_table.h" unsigned int toku_serialize_ftnode_size(FTNODE node); -int toku_serialize_ftnode_to_memory(FTNODE node, FTNODE_DISK_DATA *ndd, - unsigned int basementnodesize, - enum toku_compression_method compression_method, - bool do_rebalancing, bool in_parallel, - size_t *n_bytes_to_write, size_t *n_uncompressed_bytes, - char **bytes_to_write); -int toku_serialize_ftnode_to(int fd, BLOCKNUM, FTNODE node, FTNODE_DISK_DATA *ndd, bool do_rebalancing, FT ft, bool for_checkpoint); -int toku_serialize_rollback_log_to(int fd, ROLLBACK_LOG_NODE log, SERIALIZED_ROLLBACK_LOG_NODE serialized_log, bool is_serialized, - FT ft, bool for_checkpoint); -void toku_serialize_rollback_log_to_memory_uncompressed(ROLLBACK_LOG_NODE log, SERIALIZED_ROLLBACK_LOG_NODE serialized); - -int toku_deserialize_rollback_log_from(int fd, BLOCKNUM blocknum, ROLLBACK_LOG_NODE *logp, FT ft); -int toku_deserialize_bp_from_disk(FTNODE node, FTNODE_DISK_DATA ndd, int childnum, int fd, ftnode_fetch_extra *bfe); -int toku_deserialize_bp_from_compressed(FTNODE node, int childnum, ftnode_fetch_extra *bfe); -int toku_deserialize_ftnode_from(int fd, BLOCKNUM off, uint32_t fullhash, FTNODE *node, FTNODE_DISK_DATA *ndd, ftnode_fetch_extra *bfe); +int toku_serialize_ftnode_to_memory( + FTNODE node, + FTNODE_DISK_DATA *ndd, + unsigned int basementnodesize, + enum toku_compression_method compression_method, + bool do_rebalancing, + bool in_parallel, + size_t *n_bytes_to_write, + size_t *n_uncompressed_bytes, + char **bytes_to_write); +int toku_serialize_ftnode_to(int fd, + BLOCKNUM, + FTNODE node, + FTNODE_DISK_DATA *ndd, + bool do_rebalancing, + FT ft, + bool for_checkpoint); +int toku_serialize_rollback_log_to(int fd, + ROLLBACK_LOG_NODE log, + SERIALIZED_ROLLBACK_LOG_NODE serialized_log, + bool is_serialized, + FT ft, + bool for_checkpoint); +void toku_serialize_rollback_log_to_memory_uncompressed( + ROLLBACK_LOG_NODE log, + SERIALIZED_ROLLBACK_LOG_NODE serialized); + +int toku_deserialize_rollback_log_from(int fd, + BLOCKNUM blocknum, + ROLLBACK_LOG_NODE *logp, + FT ft); +int toku_deserialize_bp_from_disk(FTNODE node, + FTNODE_DISK_DATA ndd, + int childnum, + int fd, + ftnode_fetch_extra *bfe); +int toku_deserialize_bp_from_compressed(FTNODE node, + int childnum, + ftnode_fetch_extra *bfe); +int toku_deserialize_ftnode_from(int fd, + BLOCKNUM off, + uint32_t fullhash, + FTNODE *node, + FTNODE_DISK_DATA *ndd, + ftnode_fetch_extra *bfe); void toku_serialize_set_parallel(bool); @@ -73,9 +103,14 @@ int decompress_from_raw_block_into_rbuf(uint8_t *raw_block, size_t raw_block_siz // used by verify int deserialize_ft_versioned(int fd, struct rbuf *rb, FT *ft, uint32_t version); -void read_block_from_fd_into_rbuf(int fd, BLOCKNUM blocknum, FT ft, struct rbuf *rb); +void read_block_from_fd_into_rbuf(int fd, + BLOCKNUM blocknum, + FT ft, + struct rbuf *rb); int read_compressed_sub_block(struct rbuf *rb, struct sub_block *sb); -int verify_ftnode_sub_block(struct sub_block *sb); +int verify_ftnode_sub_block(struct sub_block *sb, + const char *fname, + BLOCKNUM blocknum); void just_decompress_sub_block(struct sub_block *sb); // used by ft-node-deserialize.cc diff --git a/storage/tokudb/PerconaFT/ft/txn/roll.cc b/storage/tokudb/PerconaFT/ft/txn/roll.cc index 4f374d62173..97afd2f5bdb 100644 --- a/storage/tokudb/PerconaFT/ft/txn/roll.cc +++ b/storage/tokudb/PerconaFT/ft/txn/roll.cc @@ -203,7 +203,7 @@ int toku_rollback_frename(BYTESTRING old_iname, } if (toku_stat(new_iname_full.get(), &stat) == -1) { - if (ENOENT == errno) + if (ENOENT == errno || ENAMETOOLONG == errno) new_exist = false; else return 1; diff --git a/storage/tokudb/PerconaFT/ft/txn/txn.cc b/storage/tokudb/PerconaFT/ft/txn/txn.cc index dd03073a3ec..a3ce6beb7b0 100644 --- a/storage/tokudb/PerconaFT/ft/txn/txn.cc +++ b/storage/tokudb/PerconaFT/ft/txn/txn.cc @@ -269,6 +269,7 @@ static txn_child_manager tcm; .state = TOKUTXN_LIVE, .num_pin = 0, .client_id = 0, + .client_extra = nullptr, .start_time = time(NULL), }; @@ -705,12 +706,14 @@ bool toku_txn_has_spilled_rollback(TOKUTXN txn) { return txn_has_spilled_rollback_logs(txn); } -uint64_t toku_txn_get_client_id(TOKUTXN txn) { - return txn->client_id; +void toku_txn_get_client_id(TOKUTXN txn, uint64_t *client_id, void **client_extra) { + if (client_id) *client_id = txn->client_id; + if (client_extra) *client_extra = txn->client_extra; } -void toku_txn_set_client_id(TOKUTXN txn, uint64_t client_id) { +void toku_txn_set_client_id(TOKUTXN txn, uint64_t client_id, void *client_extra) { txn->client_id = client_id; + txn->client_extra = client_extra; } time_t toku_txn_get_start_time(struct tokutxn *txn) { diff --git a/storage/tokudb/PerconaFT/ft/txn/txn.h b/storage/tokudb/PerconaFT/ft/txn/txn.h index 51a46022150..34a76aa9cad 100644 --- a/storage/tokudb/PerconaFT/ft/txn/txn.h +++ b/storage/tokudb/PerconaFT/ft/txn/txn.h @@ -193,6 +193,7 @@ struct tokutxn { uint32_t num_pin; // number of threads (all hot indexes) that want this // txn to not transition to commit or abort uint64_t client_id; + void *client_extra; time_t start_time; }; typedef struct tokutxn *TOKUTXN; @@ -293,8 +294,8 @@ void toku_txn_unpin_live_txn(struct tokutxn *txn); bool toku_txn_has_spilled_rollback(struct tokutxn *txn); -uint64_t toku_txn_get_client_id(struct tokutxn *txn); -void toku_txn_set_client_id(struct tokutxn *txn, uint64_t client_id); +void toku_txn_get_client_id(struct tokutxn *txn, uint64_t *client_id, void **client_extra); +void toku_txn_set_client_id(struct tokutxn *txn, uint64_t client_id, void *client_extra); time_t toku_txn_get_start_time(struct tokutxn *txn); diff --git a/storage/tokudb/PerconaFT/locktree/lock_request.cc b/storage/tokudb/PerconaFT/locktree/lock_request.cc index 22b6da9afc4..10fd2e7a208 100644 --- a/storage/tokudb/PerconaFT/locktree/lock_request.cc +++ b/storage/tokudb/PerconaFT/locktree/lock_request.cc @@ -65,6 +65,7 @@ void lock_request::create(void) { toku_cond_init(&m_wait_cond, nullptr); m_start_test_callback = nullptr; + m_start_before_pending_test_callback = nullptr; m_retry_test_callback = nullptr; } @@ -79,7 +80,7 @@ void lock_request::destroy(void) { } // set the lock request parameters. this API allows a lock request to be reused. -void lock_request::set(locktree *lt, TXNID txnid, const DBT *left_key, const DBT *right_key, lock_request::type lock_type, bool big_txn) { +void lock_request::set(locktree *lt, TXNID txnid, const DBT *left_key, const DBT *right_key, lock_request::type lock_type, bool big_txn, void *extra) { invariant(m_state != state::PENDING); m_lt = lt; m_txnid = txnid; @@ -91,6 +92,7 @@ void lock_request::set(locktree *lt, TXNID txnid, const DBT *left_key, const DBT m_state = state::INITIALIZED; m_info = lt ? lt->get_lock_request_info() : nullptr; m_big_txn = big_txn; + m_extra = extra; } // get rid of any stored left and right key copies and @@ -173,6 +175,8 @@ int lock_request::start(void) { m_state = state::PENDING; m_start_time = toku_current_time_microsec() / 1000; m_conflicting_txnid = conflicts.get(0); + if (m_start_before_pending_test_callback) + m_start_before_pending_test_callback(); toku_mutex_lock(&m_info->mutex); insert_into_lock_requests(); if (deadlock_exists(conflicts)) { @@ -180,7 +184,8 @@ int lock_request::start(void) { r = DB_LOCK_DEADLOCK; } toku_mutex_unlock(&m_info->mutex); - if (m_start_test_callback) m_start_test_callback(); // test callback + if (m_start_test_callback) + m_start_test_callback(); // test callback } if (r != DB_LOCK_NOTGRANTED) { @@ -203,7 +208,18 @@ int lock_request::wait(uint64_t wait_time_ms, uint64_t killed_time_ms, int (*kil toku_mutex_lock(&m_info->mutex); + // check again, this time locking out other retry calls + if (m_state == state::PENDING) { + retry(); + } + while (m_state == state::PENDING) { + // check if this thread is killed + if (killed_callback && killed_callback()) { + remove_from_lock_requests(); + complete(DB_LOCK_NOTGRANTED); + continue; + } // compute next wait time uint64_t t_wait; @@ -221,13 +237,13 @@ int lock_request::wait(uint64_t wait_time_ms, uint64_t killed_time_ms, int (*kil invariant(r == 0 || r == ETIMEDOUT); t_now = toku_current_time_microsec(); - if (m_state == state::PENDING && (t_now >= t_end || (killed_callback && killed_callback()))) { + if (m_state == state::PENDING && (t_now >= t_end)) { m_info->counters.timeout_count += 1; - + // if we're still pending and we timed out, then remove our // request from the set of lock requests and fail. remove_from_lock_requests(); - + // complete sets m_state to COMPLETE, breaking us out of the loop complete(DB_LOCK_NOTGRANTED); } @@ -274,13 +290,17 @@ TXNID lock_request::get_conflicting_txnid(void) const { } int lock_request::retry(void) { + invariant(m_state == state::PENDING); int r; + txnid_set conflicts; + conflicts.create(); - invariant(m_state == state::PENDING); if (m_type == type::WRITE) { - r = m_lt->acquire_write_lock(m_txnid, m_left_key, m_right_key, nullptr, m_big_txn); + r = m_lt->acquire_write_lock( + m_txnid, m_left_key, m_right_key, &conflicts, m_big_txn); } else { - r = m_lt->acquire_read_lock(m_txnid, m_left_key, m_right_key, nullptr, m_big_txn); + r = m_lt->acquire_read_lock( + m_txnid, m_left_key, m_right_key, &conflicts, m_big_txn); } // if the acquisition succeeded then remove ourselves from the @@ -288,44 +308,63 @@ int lock_request::retry(void) { if (r == 0) { remove_from_lock_requests(); complete(r); - if (m_retry_test_callback) m_retry_test_callback(); // test callback + if (m_retry_test_callback) + m_retry_test_callback(); // test callback toku_cond_broadcast(&m_wait_cond); + } else { + m_conflicting_txnid = conflicts.get(0); } + conflicts.destroy(); return r; } -void lock_request::retry_all_lock_requests(locktree *lt) { +void lock_request::retry_all_lock_requests( + locktree *lt, + void (*after_retry_all_test_callback)(void)) { lt_lock_request_info *info = lt->get_lock_request_info(); - // if a thread reads this bit to be true, then it should go ahead and - // take the locktree mutex and retry lock requests. we use this bit - // to prevent every single thread from waiting on the locktree mutex - // in order to retry requests, especially when no requests actually exist. - // - // it is important to note that this bit only provides an optimization. - // it is not problematic for it to be true when it should be false, - // but it can be problematic for it to be false when it should be true. - // therefore, the lock request code must ensures that when lock requests - // are added to this locktree, the bit is set. - // see lock_request::insert_into_lock_requests() - if (!info->should_retry_lock_requests) { + // if there are no pending lock requests than there is nothing to do + // the unlocked data race on pending_is_empty is OK since lock requests + // are retried after added to the pending set. + if (info->pending_is_empty) return; + + // get my retry generation (post increment of retry_want) + unsigned long long my_retry_want = (info->retry_want += 1); + + toku_mutex_lock(&info->retry_mutex); + + // here is the group retry algorithm. + // get the latest retry_want count and use it as the generation number of + // this retry operation. if this retry generation is > the last retry + // generation, then do the lock retries. otherwise, no lock retries + // are needed. + if ((my_retry_want - 1) == info->retry_done) { + for (;;) { + if (!info->running_retry) { + info->running_retry = true; + info->retry_done = info->retry_want; + toku_mutex_unlock(&info->retry_mutex); + retry_all_lock_requests_info(info); + if (after_retry_all_test_callback) + after_retry_all_test_callback(); + toku_mutex_lock(&info->retry_mutex); + info->running_retry = false; + toku_cond_broadcast(&info->retry_cv); + break; + } else { + toku_cond_wait(&info->retry_cv, &info->retry_mutex); + } + } } + toku_mutex_unlock(&info->retry_mutex); +} +void lock_request::retry_all_lock_requests_info(lt_lock_request_info *info) { toku_mutex_lock(&info->mutex); - - // let other threads know that they need not retry lock requests at this time. - // - // the motivation here is that if a bunch of threads have already released - // their locks in the rangetree, then its probably okay for only one thread - // to iterate over the list of requests and retry them. otherwise, at high - // thread counts and a large number of pending lock requests, you could - // end up wasting a lot of cycles. - info->should_retry_lock_requests = false; - - size_t i = 0; - while (i < info->pending_lock_requests.size()) { + // retry all of the pending lock requests. + for (size_t i = 0; i < info->pending_lock_requests.size();) { lock_request *request; int r = info->pending_lock_requests.fetch(i, &request); invariant_zero(r); @@ -346,6 +385,30 @@ void lock_request::retry_all_lock_requests(locktree *lt) { toku_mutex_unlock(&info->mutex); } +void *lock_request::get_extra(void) const { + return m_extra; +} + +void lock_request::kill_waiter(void) { + remove_from_lock_requests(); + complete(DB_LOCK_NOTGRANTED); + toku_cond_broadcast(&m_wait_cond); +} + +void lock_request::kill_waiter(locktree *lt, void *extra) { + lt_lock_request_info *info = lt->get_lock_request_info(); + toku_mutex_lock(&info->mutex); + for (size_t i = 0; i < info->pending_lock_requests.size(); i++) { + lock_request *request; + int r = info->pending_lock_requests.fetch(i, &request); + if (r == 0 && request->get_extra() == extra) { + request->kill_waiter(); + break; + } + } + toku_mutex_unlock(&info->mutex); +} + // find another lock request by txnid. must hold the mutex. lock_request *lock_request::find_lock_request(const TXNID &txnid) { lock_request *request; @@ -360,27 +423,30 @@ lock_request *lock_request::find_lock_request(const TXNID &txnid) { void lock_request::insert_into_lock_requests(void) { uint32_t idx; lock_request *request; - int r = m_info->pending_lock_requests.find_zero(m_txnid, &request, &idx); + int r = m_info->pending_lock_requests.find_zero( + m_txnid, &request, &idx); invariant(r == DB_NOTFOUND); r = m_info->pending_lock_requests.insert_at(this, idx); invariant_zero(r); - - // ensure that this bit is true, now that at least one lock request is in the set - m_info->should_retry_lock_requests = true; + m_info->pending_is_empty = false; } // remove this lock request from the locktree's set. must hold the mutex. void lock_request::remove_from_lock_requests(void) { uint32_t idx; lock_request *request; - int r = m_info->pending_lock_requests.find_zero(m_txnid, &request, &idx); + int r = m_info->pending_lock_requests.find_zero( + m_txnid, &request, &idx); invariant_zero(r); invariant(request == this); r = m_info->pending_lock_requests.delete_at(idx); invariant_zero(r); + if (m_info->pending_lock_requests.size() == 0) + m_info->pending_is_empty = true; } -int lock_request::find_by_txnid(lock_request * const &request, const TXNID &txnid) { +int lock_request::find_by_txnid(lock_request *const &request, + const TXNID &txnid) { TXNID request_txnid = request->m_txnid; if (request_txnid < txnid) { return -1; @@ -395,6 +461,10 @@ void lock_request::set_start_test_callback(void (*f)(void)) { m_start_test_callback = f; } +void lock_request::set_start_before_pending_test_callback(void (*f)(void)) { + m_start_before_pending_test_callback = f; +} + void lock_request::set_retry_test_callback(void (*f)(void)) { m_retry_test_callback = f; } diff --git a/storage/tokudb/PerconaFT/locktree/lock_request.h b/storage/tokudb/PerconaFT/locktree/lock_request.h index 48d1279cde2..a8d8cb7785b 100644 --- a/storage/tokudb/PerconaFT/locktree/lock_request.h +++ b/storage/tokudb/PerconaFT/locktree/lock_request.h @@ -78,7 +78,7 @@ public: // effect: Resets the lock request parameters, allowing it to be reused. // requires: Lock request was already created at some point - void set(locktree *lt, TXNID txnid, const DBT *left_key, const DBT *right_key, type lock_type, bool big_txn); + void set(locktree *lt, TXNID txnid, const DBT *left_key, const DBT *right_key, type lock_type, bool big_txn, void *extra = nullptr); // effect: Tries to acquire a lock described by this lock request. // returns: The return code of locktree::acquire_[write,read]_lock() @@ -107,14 +107,24 @@ public: TXNID get_conflicting_txnid(void) const; // effect: Retries all of the lock requests for the given locktree. - // Any lock requests successfully restarted is completed and woken up. + // Any lock requests successfully restarted is completed and woken + // up. // The rest remain pending. - static void retry_all_lock_requests(locktree *lt); + static void retry_all_lock_requests( + locktree *lt, + void (*after_retry_test_callback)(void) = nullptr); + static void retry_all_lock_requests_info(lt_lock_request_info *info); void set_start_test_callback(void (*f)(void)); + void set_start_before_pending_test_callback(void (*f)(void)); void set_retry_test_callback(void (*f)(void)); -private: + void *get_extra(void) const; + + void kill_waiter(void); + static void kill_waiter(locktree *lt, void *extra); + + private: enum state { UNINITIALIZED, INITIALIZED, @@ -152,6 +162,8 @@ private: // locktree that this lock request is for. struct lt_lock_request_info *m_info; + void *m_extra; + // effect: tries again to acquire the lock described by this lock request // returns: 0 if retrying the request succeeded and is now complete int retry(void); @@ -184,9 +196,10 @@ private: void copy_keys(void); - static int find_by_txnid(lock_request * const &request, const TXNID &txnid); + static int find_by_txnid(lock_request *const &request, const TXNID &txnid); void (*m_start_test_callback)(void); + void (*m_start_before_pending_test_callback)(void); void (*m_retry_test_callback)(void); friend class lock_request_unit_test; diff --git a/storage/tokudb/PerconaFT/locktree/locktree.cc b/storage/tokudb/PerconaFT/locktree/locktree.cc index d3596d47eeb..2fbf078bdd6 100644 --- a/storage/tokudb/PerconaFT/locktree/locktree.cc +++ b/storage/tokudb/PerconaFT/locktree/locktree.cc @@ -80,21 +80,24 @@ void locktree::create(locktree_manager *mgr, DICTIONARY_ID dict_id, const compar m_sto_end_early_count = 0; m_sto_end_early_time = 0; - m_lock_request_info.pending_lock_requests.create(); - ZERO_STRUCT(m_lock_request_info.mutex); - toku_mutex_init(&m_lock_request_info.mutex, nullptr); - m_lock_request_info.should_retry_lock_requests = false; - ZERO_STRUCT(m_lock_request_info.counters); - - // Threads read the should retry bit without a lock - // for performance. It's ok to read the wrong value. - // - If you think you should but you shouldn't, you waste a little time. - // - If you think you shouldn't but you should, then some other thread - // will come around to do the work of retrying requests instead of you. - TOKU_VALGRIND_HG_DISABLE_CHECKING( - &m_lock_request_info.should_retry_lock_requests, - sizeof(m_lock_request_info.should_retry_lock_requests)); - TOKU_DRD_IGNORE_VAR(m_lock_request_info.should_retry_lock_requests); + m_lock_request_info.init(); +} + +void lt_lock_request_info::init(void) { + pending_lock_requests.create(); + pending_is_empty = true; + ZERO_STRUCT(mutex); + toku_mutex_init(&mutex, nullptr); + retry_want = retry_done = 0; + ZERO_STRUCT(counters); + ZERO_STRUCT(retry_mutex); + toku_mutex_init(&retry_mutex, nullptr); + toku_cond_init(&retry_cv, nullptr); + running_retry = false; + + TOKU_VALGRIND_HG_DISABLE_CHECKING(&pending_is_empty, + sizeof(pending_is_empty)); + TOKU_DRD_IGNORE_VAR(pending_is_empty); } void locktree::destroy(void) { @@ -104,11 +107,18 @@ void locktree::destroy(void) { m_rangetree->destroy(); toku_free(m_rangetree); m_sto_buffer.destroy(); - m_lock_request_info.pending_lock_requests.destroy(); + m_lock_request_info.destroy(); +} + +void lt_lock_request_info::destroy(void) { + pending_lock_requests.destroy(); + toku_mutex_destroy(&mutex); + toku_mutex_destroy(&retry_mutex); + toku_cond_destroy(&retry_cv); } void locktree::add_reference(void) { - (void) toku_sync_add_and_fetch(&m_reference_count, 1); + (void)toku_sync_add_and_fetch(&m_reference_count, 1); } uint32_t locktree::release_reference(void) { diff --git a/storage/tokudb/PerconaFT/locktree/locktree.h b/storage/tokudb/PerconaFT/locktree/locktree.h index 710f9e7db06..1ba7a51b124 100644 --- a/storage/tokudb/PerconaFT/locktree/locktree.h +++ b/storage/tokudb/PerconaFT/locktree/locktree.h @@ -38,12 +38,14 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. #pragma once +#include + #include -#include #include +#include -#include // just for DICTIONARY_ID.. #include +#include // just for DICTIONARY_ID.. #include @@ -80,20 +82,33 @@ namespace toku { // Lock request state for some locktree struct lt_lock_request_info { omt pending_lock_requests; + std::atomic_bool pending_is_empty; toku_mutex_t mutex; bool should_retry_lock_requests; lt_counters counters; + std::atomic_ullong retry_want; + unsigned long long retry_done; + toku_mutex_t retry_mutex; + toku_cond_t retry_cv; + bool running_retry; + + void init(void); + void destroy(void); }; - // The locktree manager manages a set of locktrees, one for each open dictionary. - // Locktrees are retrieved from the manager. When they are no longer needed, they - // are be released by the user. + // The locktree manager manages a set of locktrees, one for each open + // dictionary. Locktrees are retrieved from the manager. When they are no + // longer needed, they are be released by the user. class locktree_manager { - public: + public: // param: create_cb, called just after a locktree is first created. // destroy_cb, called just before a locktree is destroyed. - // escalate_cb, called after a locktree is escalated (with extra param) - void create(lt_create_cb create_cb, lt_destroy_cb destroy_cb, lt_escalate_cb escalate_cb, void *extra); + // escalate_cb, called after a locktree is escalated (with extra + // param) + void create(lt_create_cb create_cb, + lt_destroy_cb destroy_cb, + lt_escalate_cb escalate_cb, + void *extra); void destroy(void); @@ -159,6 +174,8 @@ namespace toku { // Add time t to the escalator's wait time statistics void add_escalator_wait_time(uint64_t t); + void kill_waiter(void *extra); + private: static const uint64_t DEFAULT_MAX_LOCK_MEMORY = 64L * 1024 * 1024; diff --git a/storage/tokudb/PerconaFT/locktree/manager.cc b/storage/tokudb/PerconaFT/locktree/manager.cc index 4708cdf4a5a..91ff7c5a007 100644 --- a/storage/tokudb/PerconaFT/locktree/manager.cc +++ b/storage/tokudb/PerconaFT/locktree/manager.cc @@ -483,4 +483,17 @@ void locktree_manager::get_status(LTM_STATUS statp) { *statp = ltm_status; } +void locktree_manager::kill_waiter(void *extra) { + mutex_lock(); + int r = 0; + size_t num_locktrees = m_locktree_map.size(); + for (size_t i = 0; i < num_locktrees; i++) { + locktree *lt; + r = m_locktree_map.fetch(i, <); + invariant_zero(r); + lock_request::kill_waiter(lt, extra); + } + mutex_unlock(); +} + } /* namespace toku */ diff --git a/storage/tokudb/PerconaFT/locktree/tests/kill_waiter.cc b/storage/tokudb/PerconaFT/locktree/tests/kill_waiter.cc new file mode 100644 index 00000000000..8d93c0bbbab --- /dev/null +++ b/storage/tokudb/PerconaFT/locktree/tests/kill_waiter.cc @@ -0,0 +1,100 @@ +/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: + +// test the lock manager kill waiter function + +#include "locktree.h" +#include "lock_request.h" +#include "test.h" +#include "locktree_unit_test.h" +#include +#include + +namespace toku { + +const uint64_t my_lock_wait_time = 1000 * 1000; +const uint64_t my_killed_time = 500 * 1000; +const int n_locks = 4; + +static int my_killed_callback(void) { + if (1) fprintf(stderr, "%s:%u %s\n", __FILE__, __LINE__, __FUNCTION__); + return 0; +} + +static void locktree_release_lock(locktree *lt, TXNID txn_id, const DBT *left, const DBT *right) { + range_buffer buffer; + buffer.create(); + buffer.append(left, right); + lt->release_locks(txn_id, &buffer); + buffer.destroy(); +} + +static void wait_lock(lock_request *lr, std::atomic_int *done) { + int r = lr->wait(my_lock_wait_time, my_killed_time, my_killed_callback); + assert(r == DB_LOCK_NOTGRANTED); + *done = 1; +} + +static void test_kill_waiter(void) { + int r; + + locktree_manager mgr; + mgr.create(nullptr, nullptr, nullptr, nullptr); + + DICTIONARY_ID dict_id = { 1 }; + locktree *lt = mgr.get_lt(dict_id, dbt_comparator, nullptr); + + const DBT *one = get_dbt(1); + + lock_request locks[n_locks]; + std::thread waiters[n_locks-1]; + for (int i = 0; i < n_locks; i++) { + locks[i].create(); + locks[i].set(lt, i+1, one, one, lock_request::type::WRITE, false, &waiters[i]); + } + + // txn 'n_locks' grabs the lock + r = locks[n_locks-1].start(); + assert_zero(r); + + for (int i = 0; i < n_locks-1; i++) { + r = locks[i].start(); + assert(r == DB_LOCK_NOTGRANTED); + } + + std::atomic_int done[n_locks-1]; + for (int i = 0; i < n_locks-1; i++) { + done[i] = 0; + waiters[i] = std::thread(wait_lock, &locks[i], &done[i]); + } + + for (int i = 0; i < n_locks-1; i++) { + assert(!done[i]); + } + + sleep(1); + for (int i = 0; i < n_locks-1; i++) { + mgr.kill_waiter(&waiters[i]); + while (!done[i]) sleep(1); + waiters[i].join(); + for (int j = i+1; j < n_locks-1; j++) + assert(!done[j]); + } + + locktree_release_lock(lt, n_locks, one, one); + + for (int i = 0; i < n_locks; i++) { + locks[i].destroy(); + } + + mgr.release_lt(lt); + mgr.destroy(); +} + +} /* namespace toku */ + +int main(void) { + toku::test_kill_waiter(); + return 0; +} + diff --git a/storage/tokudb/PerconaFT/locktree/tests/lock_request_killed.cc b/storage/tokudb/PerconaFT/locktree/tests/lock_request_killed.cc index efd4092906b..ec464444271 100644 --- a/storage/tokudb/PerconaFT/locktree/tests/lock_request_killed.cc +++ b/storage/tokudb/PerconaFT/locktree/tests/lock_request_killed.cc @@ -51,8 +51,9 @@ static uint64_t t_do_kill; static int my_killed_callback(void) { uint64_t t_now = toku_current_time_microsec(); + if (t_now == t_last_kill) + return 0; assert(t_now >= t_last_kill); - assert(t_now - t_last_kill >= my_killed_time * 1000 / 2); // div by 2 for valgrind which is not very accurate t_last_kill = t_now; killed_calls++; if (t_now >= t_do_kill) diff --git a/storage/tokudb/PerconaFT/locktree/tests/lock_request_not_killed.cc b/storage/tokudb/PerconaFT/locktree/tests/lock_request_not_killed.cc index 702e2e2626c..647b4d3c418 100644 --- a/storage/tokudb/PerconaFT/locktree/tests/lock_request_not_killed.cc +++ b/storage/tokudb/PerconaFT/locktree/tests/lock_request_not_killed.cc @@ -52,7 +52,6 @@ static uint64_t t_last_kill; static int my_killed_callback(void) { uint64_t t_now = toku_current_time_microsec(); assert(t_now >= t_last_kill); - assert(t_now - t_last_kill >= my_killed_time * 1000 / 2); // div by 2 for valgrind which is not very accurate t_last_kill = t_now; killed_calls++; return 0; diff --git a/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_release_wait.cc b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_release_wait.cc new file mode 100644 index 00000000000..717628f9df7 --- /dev/null +++ b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_release_wait.cc @@ -0,0 +1,91 @@ +/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: + +// test the race between start, release, and wait. since start does not put +// its lock request into the pending set, the blocking txn could release its +// lock before the first txn waits. this will block the first txn because its +// lock request is not known when the lock is released. the bug fix is to try +// again when lock retries are locked out. + +#include "lock_request.h" +#include +#include +#include "locktree.h" +#include "locktree_unit_test.h" +#include "test.h" + +namespace toku { + + const uint64_t my_lock_wait_time = 1000 * 1000; // ms + const uint64_t my_killed_time = 1 * 1000; // ms + + static uint64_t t_wait; + + static int my_killed_callback(void) { + uint64_t t_now = toku_current_time_microsec(); + assert(t_now >= t_wait); + if (t_now - t_wait >= my_killed_time * 1000) + abort(); + return 0; + } + + static void locktree_release_lock(locktree *lt, + TXNID txn_id, + const DBT *left, + const DBT *right) { + range_buffer buffer; + buffer.create(); + buffer.append(left, right); + lt->release_locks(txn_id, &buffer); + buffer.destroy(); + } + + static void test_start_release_wait(void) { + int r; + + locktree_manager mgr; + mgr.create(nullptr, nullptr, nullptr, nullptr); + + DICTIONARY_ID dict_id = {1}; + locktree *lt = mgr.get_lt(dict_id, dbt_comparator, nullptr); + + const DBT *one = get_dbt(1); + + // a locks one + lock_request a; + a.create(); + a.set(lt, 1, one, one, lock_request::type::WRITE, false); + r = a.start(); + assert(r == 0); + + // b tries to lock one, fails + lock_request b; + b.create(); + b.set(lt, 2, one, one, lock_request::type::WRITE, false); + r = b.start(); + assert(r == DB_LOCK_NOTGRANTED); + + // a releases its lock + locktree_release_lock(lt, 1, one, one); + + // b waits for one, gets locks immediately + t_wait = toku_current_time_microsec(); + r = b.wait(my_lock_wait_time, my_killed_time, my_killed_callback); + assert(r == 0); + + // b releases its lock so we can exit cleanly + locktree_release_lock(lt, 2, one, one); + + a.destroy(); + b.destroy(); + + mgr.release_lt(lt); + mgr.destroy(); + } + +} /* namespace toku */ + +int main(void) { + toku::test_start_release_wait(); + return 0; +} diff --git a/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race.cc b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race.cc index 3b653e9c6ef..5c28701c49e 100644 --- a/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race.cc +++ b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race.cc @@ -34,12 +34,14 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. along with PerconaFT. If not, see . ======= */ -#ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." +#ident \ + "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." +#include "lock_request.h" #include -#include "test.h" +#include #include "locktree.h" -#include "lock_request.h" +#include "test.h" // Test FT-633, the data race on the lock request between ::start and ::retry // This test is non-deterministic. It uses sleeps at 2 critical places to @@ -47,90 +49,65 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. namespace toku { -struct locker_arg { - locktree *_lt; - TXNID _id; - const DBT *_key; - - locker_arg(locktree *lt, TXNID id, const DBT *key) : _lt(lt), _id(id), _key(key) { - } -}; - -static void locker_callback(void) { - usleep(10000); -} - -static void run_locker(locktree *lt, TXNID txnid, const DBT *key) { - int i; - for (i = 0; i < 1000; i++) { - - lock_request request; - request.create(); - - request.set(lt, txnid, key, key, lock_request::type::WRITE, false); - - // set the test callbacks - request.set_start_test_callback(locker_callback); - request.set_retry_test_callback(locker_callback); - - // try to acquire the lock - int r = request.start(); - if (r == DB_LOCK_NOTGRANTED) { - // wait for the lock to be granted - r = request.wait(10 * 1000); - } - - if (r == 0) { - // release the lock - range_buffer buffer; - buffer.create(); - buffer.append(key, key); - lt->release_locks(txnid, &buffer); - buffer.destroy(); - - // retry pending lock requests - lock_request::retry_all_lock_requests(lt); + static void locker_callback(void) { usleep(10000); } + + static void run_locker(locktree *lt, TXNID txnid, const DBT *key) { + int i; + for (i = 0; i < 1000; i++) { + lock_request request; + request.create(); + + request.set(lt, txnid, key, key, lock_request::type::WRITE, false); + + // set the test callbacks + request.set_start_test_callback(locker_callback); + request.set_retry_test_callback(locker_callback); + + // try to acquire the lock + int r = request.start(); + if (r == DB_LOCK_NOTGRANTED) { + // wait for the lock to be granted + r = request.wait(10 * 1000); + } + + if (r == 0) { + // release the lock + range_buffer buffer; + buffer.create(); + buffer.append(key, key); + lt->release_locks(txnid, &buffer); + buffer.destroy(); + + // retry pending lock requests + lock_request::retry_all_lock_requests(lt); + } + + request.destroy(); + memset(&request, 0xab, sizeof request); + + toku_pthread_yield(); + if ((i % 10) == 0) + std::cerr << std::this_thread::get_id() << " " << i + << std::endl; } - - request.destroy(); - memset(&request, 0xab, sizeof request); - - toku_pthread_yield(); - if ((i % 10) == 0) - std::cout << toku_pthread_self() << " " << i << std::endl; } -} - -static void *locker(void *v_arg) { - locker_arg *arg = static_cast(v_arg); - run_locker(arg->_lt, arg->_id, arg->_key); - return arg; -} } /* namespace toku */ int main(void) { - int r; - toku::locktree lt; - DICTIONARY_ID dict_id = { 1 }; + DICTIONARY_ID dict_id = {1}; lt.create(nullptr, dict_id, toku::dbt_comparator); const DBT *one = toku::get_dbt(1); const int n_workers = 2; - toku_pthread_t ids[n_workers]; + std::thread worker[n_workers]; for (int i = 0; i < n_workers; i++) { - toku::locker_arg *arg = new toku::locker_arg(<, i, one); - r = toku_pthread_create(&ids[i], nullptr, toku::locker, arg); - assert_zero(r); + worker[i] = std::thread(toku::run_locker, <, i, one); } for (int i = 0; i < n_workers; i++) { - void *ret; - r = toku_pthread_join(ids[i], &ret); - assert_zero(r); - toku::locker_arg *arg = static_cast(ret); - delete arg; + worker[i].join(); } lt.release_reference(); diff --git a/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race_3.cc b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race_3.cc new file mode 100644 index 00000000000..1a05b396f10 --- /dev/null +++ b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_race_3.cc @@ -0,0 +1,133 @@ +/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: +#ident "$Id$" +/*====== +This file is part of PerconaFT. + + +Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. + + PerconaFT is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, + as published by the Free Software Foundation. + + PerconaFT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with PerconaFT. If not, see . + +---------------------------------------- + + PerconaFT is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License, version 3, + as published by the Free Software Foundation. + + PerconaFT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with PerconaFT. If not, see . +======= */ + +#ident \ + "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." + +#include "lock_request.h" +#include +#include +#include +#include "locktree.h" +#include "test.h" + +// Suppose that 3 threads are running a lock acquire, release, retry sequence. +// There is a race in the retry algorithm with 2 threads running lock retry +// simultaneously. The first thread to run retry sets a flag that will cause +// the second thread to skip the lock retries. If the first thread progressed +// past the contended lock, then the second threa will HANG until its lock timer +// pops, even when the contended lock is no longer held. + +// This test exposes this problem as a test hang. The group retry algorithm +// fixes the race in the lock request retry algorihm and this test should no +// longer hang. + +namespace toku { + + // use 1000 when after_retry_all is implemented, otherwise use 100000 + static const int n_tests = 1000; // 100000; + + static void after_retry_all(void) { usleep(10000); } + + static void run_locker(locktree *lt, + TXNID txnid, + const DBT *key, + pthread_barrier_t *b) { + for (int i = 0; i < n_tests; i++) { + int r; + r = pthread_barrier_wait(b); + assert(r == 0 || r == PTHREAD_BARRIER_SERIAL_THREAD); + + lock_request request; + request.create(); + + request.set(lt, txnid, key, key, lock_request::type::WRITE, false); + + // try to acquire the lock + r = request.start(); + if (r == DB_LOCK_NOTGRANTED) { + // wait for the lock to be granted + r = request.wait(1000 * 1000); + } + + if (r == 0) { + // release the lock + range_buffer buffer; + buffer.create(); + buffer.append(key, key); + lt->release_locks(txnid, &buffer); + buffer.destroy(); + + // retry pending lock requests + lock_request::retry_all_lock_requests(lt, after_retry_all); + } + + request.destroy(); + memset(&request, 0xab, sizeof request); + + toku_pthread_yield(); + if ((i % 10) == 0) + std::cerr << std::this_thread::get_id() << " " << i + << std::endl; + } + } + +} /* namespace toku */ + +int main(void) { + toku::locktree lt; + DICTIONARY_ID dict_id = {1}; + lt.create(nullptr, dict_id, toku::dbt_comparator); + + const DBT *one = toku::get_dbt(1); + + const int n_workers = 3; + std::thread worker[n_workers]; + pthread_barrier_t b; + int r = pthread_barrier_init(&b, nullptr, n_workers); + assert(r == 0); + for (int i = 0; i < n_workers; i++) { + worker[i] = std::thread(toku::run_locker, <, i, one, &b); + } + for (int i = 0; i < n_workers; i++) { + worker[i].join(); + } + r = pthread_barrier_destroy(&b); + assert(r == 0); + lt.release_reference(); + lt.destroy(); + return 0; +} diff --git a/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_wait_race_2.cc b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_wait_race_2.cc new file mode 100644 index 00000000000..4b6dadd440f --- /dev/null +++ b/storage/tokudb/PerconaFT/locktree/tests/lock_request_start_retry_wait_race_2.cc @@ -0,0 +1,135 @@ +/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: +#ident "$Id$" +/*====== +This file is part of PerconaFT. + + +Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. + + PerconaFT is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, + as published by the Free Software Foundation. + + PerconaFT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with PerconaFT. If not, see . + +---------------------------------------- + + PerconaFT is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License, version 3, + as published by the Free Software Foundation. + + PerconaFT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with PerconaFT. If not, see . +======= */ + +#ident \ + "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." + +#include "lock_request.h" +#include +#include +#include +#include "locktree.h" +#include "test.h" + +// Suppose that 2 threads are running a lock acquire, release, retry sequence. +// There is a race between the acquire and the release with 2 threads. +// If thread 1 acquires a lock, and thread 2 tries to acquire the same lock and +// fails, thread 1 may release its lock and retry pending lock requests BEFORE +// thread 2 adds itself to the pending lock requests. If this happens, then +// thread 2 will HANG until its lock timer expires even when the lock it is +// waiting for is FREE. + +// This test exposes this problem as a test hang. If the race is fixed, then +// the test runs to completion. + +namespace toku { + + static void start_before_pending(void) { usleep(10000); } + + static void run_locker(locktree *lt, + TXNID txnid, + const DBT *key, + pthread_barrier_t *b) { + for (int i = 0; i < 100000; i++) { + int r; + r = pthread_barrier_wait(b); + assert(r == 0 || r == PTHREAD_BARRIER_SERIAL_THREAD); + + lock_request request; + request.create(); + request.set(lt, txnid, key, key, lock_request::type::WRITE, false); + + // if the callback is included, then the race is easy to reproduce. + // Otherwise, several test runs may be required before the race + // happens. + request.set_start_before_pending_test_callback( + start_before_pending); + + // try to acquire the lock + r = request.start(); + if (r == DB_LOCK_NOTGRANTED) { + // wait for the lock to be granted + r = request.wait(1000 * 1000); + } + + if (r == 0) { + // release the lock + range_buffer buffer; + buffer.create(); + buffer.append(key, key); + lt->release_locks(txnid, &buffer); + buffer.destroy(); + + // retry pending lock requests + lock_request::retry_all_lock_requests(lt); + } + + request.destroy(); + memset(&request, 0xab, sizeof request); + + toku_pthread_yield(); + if ((i % 10) == 0) + std::cerr << std::this_thread::get_id() << " " << i + << std::endl; + } + } + +} /* namespace toku */ + +int main(void) { + toku::locktree lt; + DICTIONARY_ID dict_id = {1}; + lt.create(nullptr, dict_id, toku::dbt_comparator); + + const DBT *one = toku::get_dbt(1); + + const int n_workers = 2; + std::thread worker[n_workers]; + pthread_barrier_t b; + int r = pthread_barrier_init(&b, nullptr, n_workers); + assert(r == 0); + for (int i = 0; i < n_workers; i++) { + worker[i] = std::thread(toku::run_locker, <, i, one, &b); + } + for (int i = 0; i < n_workers; i++) { + worker[i].join(); + } + r = pthread_barrier_destroy(&b); + assert(r == 0); + lt.release_reference(); + lt.destroy(); + return 0; +} diff --git a/storage/tokudb/PerconaFT/portability/toku_debug_sync.h b/storage/tokudb/PerconaFT/portability/toku_debug_sync.h new file mode 100644 index 00000000000..4a959cab1fe --- /dev/null +++ b/storage/tokudb/PerconaFT/portability/toku_debug_sync.h @@ -0,0 +1,77 @@ +/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ +// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: +#ident "$Id$" +/*====== +This file is part of PerconaFT. + + +Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. + + PerconaFT is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, + as published by the Free Software Foundation. + + PerconaFT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with PerconaFT. If not, see . + +---------------------------------------- + + PerconaFT is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License, version 3, + as published by the Free Software Foundation. + + PerconaFT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with PerconaFT. If not, see . +======= */ + +#ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." + +#pragma once + +struct tokutxn; + +#if defined(ENABLED_DEBUG_SYNC) + +/* + the below macros are defined in my_global.h, which is included in m_string.h, + the same macros are defined in TokuSetupCompiler.cmake as compiler options, + undefine them here to avoid build errors +*/ +#undef __STDC_FORMAT_MACROS +#undef __STDC_LIMIT_MACROS + +#include "m_string.h" +#include "debug_sync.h" + +void toku_txn_get_client_id(struct tokutxn *txn, + uint64_t *client_id, + void **client_extra); + +inline void toku_debug_sync(struct tokutxn *txn, const char *sync_point_name) { + uint64_t client_id; + void *client_extra; + THD *thd; + + if (likely(!opt_debug_sync_timeout)) + return; + + toku_txn_get_client_id(txn, &client_id, &client_extra); + thd = reinterpret_cast(client_extra); + debug_sync(thd, sync_point_name, strlen(sync_point_name)); +} + +#else // defined(ENABLED_DEBUG_SYNC) + +inline void toku_debug_sync(struct tokutxn *, const char *) {}; + +#endif // defined(ENABLED_DEBUG_SYNC) diff --git a/storage/tokudb/PerconaFT/portability/toku_portability.h b/storage/tokudb/PerconaFT/portability/toku_portability.h index f127b0fe172..28ea8014f53 100644 --- a/storage/tokudb/PerconaFT/portability/toku_portability.h +++ b/storage/tokudb/PerconaFT/portability/toku_portability.h @@ -121,6 +121,7 @@ typedef int64_t toku_off_t; #include "toku_htod.h" #include "toku_assert.h" #include "toku_crash.h" +#include "toku_debug_sync.h" #define UU(x) x __attribute__((__unused__)) @@ -183,8 +184,10 @@ extern void *realloc(void*, size_t) __THROW __attribute__((__deprecat # pragma GCC poison u_int32_t # pragma GCC poison u_int64_t # pragma GCC poison BOOL +#if !defined(MYSQL_TOKUDB_ENGINE) # pragma GCC poison FALSE # pragma GCC poison TRUE +#endif // MYSQL_TOKUDB_ENGINE #endif #pragma GCC poison __sync_fetch_and_add #pragma GCC poison __sync_fetch_and_sub diff --git a/storage/tokudb/PerconaFT/src/tests/test_iterate_live_transactions.cc b/storage/tokudb/PerconaFT/src/tests/test_iterate_live_transactions.cc index c5561cdf90f..1eb04a06594 100644 --- a/storage/tokudb/PerconaFT/src/tests/test_iterate_live_transactions.cc +++ b/storage/tokudb/PerconaFT/src/tests/test_iterate_live_transactions.cc @@ -55,7 +55,8 @@ static int iterate_callback(DB_TXN *txn, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) { uint64_t txnid = txn->id64(txn); - uint64_t client_id = txn->get_client_id(txn); + uint64_t client_id; void *client_extra; + txn->get_client_id(txn, &client_id, &client_extra); iterate_extra *info = reinterpret_cast(extra); DB *db; DBT left_key, right_key; @@ -93,13 +94,13 @@ int test_main(int UU(argc), char *const UU(argv[])) { r = env->open(env, TOKU_TEST_FILENAME, env_flags, 0755); CKERR(r); r = env->txn_begin(env, NULL, &txn1, 0); CKERR(r); - txn1->set_client_id(txn1, 0); + txn1->set_client_id(txn1, 0, nullptr); txnid1 = txn1->id64(txn1); r = env->txn_begin(env, NULL, &txn2, 0); CKERR(r); - txn2->set_client_id(txn2, 1); + txn2->set_client_id(txn2, 1, nullptr); txnid2 = txn2->id64(txn2); r = env->txn_begin(env, NULL, &txn3, 0); CKERR(r); - txn3->set_client_id(txn3, 2); + txn3->set_client_id(txn3, 2, nullptr); txnid3 = txn3->id64(txn3); { diff --git a/storage/tokudb/PerconaFT/src/tests/test_stress0.cc b/storage/tokudb/PerconaFT/src/tests/test_stress0.cc index 88140dd1731..037ffdd312d 100644 --- a/storage/tokudb/PerconaFT/src/tests/test_stress0.cc +++ b/storage/tokudb/PerconaFT/src/tests/test_stress0.cc @@ -93,7 +93,8 @@ static int iterate_txns(DB_TXN *txn, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) { uint64_t txnid = txn->id64(txn); - uint64_t client_id = txn->get_client_id(txn); + uint64_t client_id; void *client_extra; + txn->get_client_id(txn, &client_id, &client_extra); invariant_null(extra); invariant(txnid > 0); invariant(client_id == 0); diff --git a/storage/tokudb/PerconaFT/src/tests/transactional_fileops.cc b/storage/tokudb/PerconaFT/src/tests/transactional_fileops.cc index c1e7c5b21c4..858a1d70f7f 100644 --- a/storage/tokudb/PerconaFT/src/tests/transactional_fileops.cc +++ b/storage/tokudb/PerconaFT/src/tests/transactional_fileops.cc @@ -87,6 +87,7 @@ setup (void) { else error_file = stderr; r=db_env_create(&env, 0); CKERR(r); + env->set_dir_per_db(env, true); env->set_errfile(env, error_file ? error_file : stderr); r=env->open(env, TOKU_TEST_FILENAME, DB_INIT_LOCK|DB_INIT_LOG|DB_INIT_MPOOL|DB_INIT_TXN|DB_CREATE|DB_PRIVATE, S_IRWXU+S_IRWXG+S_IRWXO); CKERR(r); } @@ -431,6 +432,14 @@ test_fileops_3(void) { r = env->dbrename(env, txn_a, "a.db", NULL, "d.db", 0); CKERR2(r, EEXIST); + // verify correct error return code when trying to + // rename a dictionary to a name that is beyond the limit + // of the operating system. + char longname[FILENAME_MAX+11]; + memset(longname, 'b', FILENAME_MAX+7); + memcpy(longname+FILENAME_MAX+7, ".db", 4); + r = env->dbrename(env, txn_a, "a.db", NULL, longname, 0); + CKERR2(r, ENAMETOOLONG); r=txn_a->abort(txn_a); CKERR(r); } diff --git a/storage/tokudb/PerconaFT/src/ydb.cc b/storage/tokudb/PerconaFT/src/ydb.cc index 6dd8564e6a1..abf8d3dfd17 100644 --- a/storage/tokudb/PerconaFT/src/ydb.cc +++ b/storage/tokudb/PerconaFT/src/ydb.cc @@ -2775,6 +2775,10 @@ static void env_set_killed_callback(DB_ENV *env, uint64_t default_killed_time_ms env->i->killed_callback = killed_callback; } +static void env_kill_waiter(DB_ENV *env, void *extra) { + env->i->ltm.kill_waiter(extra); +} + static void env_do_backtrace(DB_ENV *env) { if (env->i->errcall) { db_env_do_backtrace_errfunc((toku_env_err_func) toku_env_err, (const void *) env); @@ -2877,6 +2881,7 @@ toku_env_create(DB_ENV ** envp, uint32_t flags) { USENV(set_dir_per_db); USENV(get_dir_per_db); USENV(get_data_dir); + USENV(kill_waiter); #undef USENV // unlocked methods @@ -3061,28 +3066,31 @@ env_dbremove_subdb(DB_ENV * env, DB_TXN * txn, const char *fname, const char *db // see if we can acquire a table lock for the given dname. // requires: write lock on dname in the directory. dictionary // open, close, and begin checkpoint cannot occur. -// returns: true if we could open, lock, and close a dictionary -// with the given dname, false otherwise. -static bool +// returns: zero if we could open, lock, and close a dictionary +// with the given dname, errno otherwise. +static int can_acquire_table_lock(DB_ENV *env, DB_TXN *txn, const char *iname_in_env) { int r; - bool got_lock = false; DB *db; r = toku_db_create(&db, env, 0); assert_zero(r); r = toku_db_open_iname(db, txn, iname_in_env, 0, 0); - assert_zero(r); + if(r) { + if (r == ENAMETOOLONG) + toku_ydb_do_error(env, r, "File name too long!\n"); + goto exit; + } r = toku_db_pre_acquire_table_lock(db, txn); - if (r == 0) { - got_lock = true; - } else { - got_lock = false; + if (r) { + r = DB_LOCK_NOTGRANTED; } - r = toku_db_close(db); - assert_zero(r); - - return got_lock; +exit: + if(db) { + int r2 = toku_db_close(db); + assert_zero(r2); + } + return r; } static int @@ -3295,8 +3303,8 @@ env_dbrename(DB_ENV *env, DB_TXN *txn, const char *fname, const char *dbname, co // otherwise, we're okay in marking this ft as remove on // commit. no new handles can open for this dictionary // because the txn has directory write locks on the dname - if (txn && !can_acquire_table_lock(env, txn, new_iname.get())) { - r = DB_LOCK_NOTGRANTED; + if (txn) { + r = can_acquire_table_lock(env, txn, new_iname.get()); } // We don't do anything at the ft or cachetable layer for rename. // We just update entries in the environment's directory. diff --git a/storage/tokudb/PerconaFT/src/ydb_row_lock.cc b/storage/tokudb/PerconaFT/src/ydb_row_lock.cc index 913e1a44faf..d612262e2ab 100644 --- a/storage/tokudb/PerconaFT/src/ydb_row_lock.cc +++ b/storage/tokudb/PerconaFT/src/ydb_row_lock.cc @@ -181,7 +181,16 @@ int toku_db_get_range_lock(DB *db, DB_TXN *txn, const DBT *left_key, const DBT * request.create(); int r = toku_db_start_range_lock(db, txn, left_key, right_key, lock_type, &request); if (r == DB_LOCK_NOTGRANTED) { + toku_debug_sync(db_txn_struct_i(txn)->tokutxn, + "toku_range_lock_before_wait"); r = toku_db_wait_range_lock(db, txn, &request); + if (r == DB_LOCK_NOTGRANTED) + toku_debug_sync(db_txn_struct_i(txn)->tokutxn, + "toku_range_lock_not_granted_after_wait"); + } + else if (r == 0) { + toku_debug_sync(db_txn_struct_i(txn)->tokutxn, + "toku_range_lock_granted_immediately"); } request.destroy(); @@ -191,9 +200,13 @@ int toku_db_get_range_lock(DB *db, DB_TXN *txn, const DBT *left_key, const DBT * // Setup and start an asynchronous lock request. int toku_db_start_range_lock(DB *db, DB_TXN *txn, const DBT *left_key, const DBT *right_key, toku::lock_request::type lock_type, toku::lock_request *request) { + uint64_t client_id; + void *client_extra; DB_TXN *txn_anc = txn_oldest_ancester(txn); TXNID txn_anc_id = txn_anc->id64(txn_anc); - request->set(db->i->lt, txn_anc_id, left_key, right_key, lock_type, toku_is_big_txn(txn_anc)); + txn->get_client_id(txn, &client_id, &client_extra); + request->set(db->i->lt, txn_anc_id, left_key, right_key, lock_type, + toku_is_big_txn(txn_anc), client_extra); const int r = request->start(); if (r == 0) { @@ -241,6 +254,8 @@ int toku_db_get_point_write_lock(DB *db, DB_TXN *txn, const DBT *key) { // acquire a point write lock on the key for a given txn. // this does not block the calling thread. void toku_db_grab_write_lock (DB *db, DBT *key, TOKUTXN tokutxn) { + uint64_t client_id; + void *client_extra; DB_TXN *txn = toku_txn_get_container_db_txn(tokutxn); DB_TXN *txn_anc = txn_oldest_ancester(txn); TXNID txn_anc_id = txn_anc->id64(txn_anc); @@ -248,7 +263,10 @@ void toku_db_grab_write_lock (DB *db, DBT *key, TOKUTXN tokutxn) { // This lock request must succeed, so we do not want to wait toku::lock_request request; request.create(); - request.set(db->i->lt, txn_anc_id, key, key, toku::lock_request::type::WRITE, toku_is_big_txn(txn_anc)); + txn->get_client_id(txn, &client_id, &client_extra); + request.set(db->i->lt, txn_anc_id, key, key, + toku::lock_request::type::WRITE, toku_is_big_txn(txn_anc), + client_extra); int r = request.start(); invariant_zero(r); db_txn_note_row_lock(db, txn_anc, key, key); diff --git a/storage/tokudb/PerconaFT/src/ydb_txn.cc b/storage/tokudb/PerconaFT/src/ydb_txn.cc index ae1f93011d1..40b479055f2 100644 --- a/storage/tokudb/PerconaFT/src/ydb_txn.cc +++ b/storage/tokudb/PerconaFT/src/ydb_txn.cc @@ -323,12 +323,12 @@ int locked_txn_abort(DB_TXN *txn) { return r; } -static void locked_txn_set_client_id(DB_TXN *txn, uint64_t client_id) { - toku_txn_set_client_id(db_txn_struct_i(txn)->tokutxn, client_id); +static void locked_txn_set_client_id(DB_TXN *txn, uint64_t client_id, void *client_extra) { + toku_txn_set_client_id(db_txn_struct_i(txn)->tokutxn, client_id, client_extra); } -static uint64_t locked_txn_get_client_id(DB_TXN *txn) { - return toku_txn_get_client_id(db_txn_struct_i(txn)->tokutxn); +static void locked_txn_get_client_id(DB_TXN *txn, uint64_t *client_id, void **client_extra) { + toku_txn_get_client_id(db_txn_struct_i(txn)->tokutxn, client_id, client_extra); } static int toku_txn_discard(DB_TXN *txn, uint32_t flags) { diff --git a/storage/tokudb/PerconaFT/tools/CMakeLists.txt b/storage/tokudb/PerconaFT/tools/CMakeLists.txt index 30ca883c4ba..b64c9b9c45a 100644 --- a/storage/tokudb/PerconaFT/tools/CMakeLists.txt +++ b/storage/tokudb/PerconaFT/tools/CMakeLists.txt @@ -6,6 +6,14 @@ foreach(tool ${tools}) add_dependencies(${tool} install_tdb_h) target_link_libraries(${tool} ${LIBTOKUDB}_static ft_static z lzma snappy ${LIBTOKUPORTABILITY}_static ${CMAKE_THREAD_LIBS_INIT} ${EXTRA_SYSTEM_LIBS}) + # detect when we are being built as a subproject + if (DEFINED MYSQL_PROJECT_NAME_DOCSTRING) + if ((CMAKE_BUILD_TYPE MATCHES "Debug") AND + (CMAKE_CXX_FLAGS_DEBUG MATCHES " -DENABLED_DEBUG_SYNC")) + target_link_libraries(${tool} sql binlog rpl master slave) + endif() + endif () + add_space_separated_property(TARGET ${tool} COMPILE_FLAGS -fvisibility=hidden) endforeach(tool) diff --git a/storage/tokudb/PerconaFT/tools/ftverify.cc b/storage/tokudb/PerconaFT/tools/ftverify.cc index 2324249ba00..ee40b991ea6 100644 --- a/storage/tokudb/PerconaFT/tools/ftverify.cc +++ b/storage/tokudb/PerconaFT/tools/ftverify.cc @@ -325,7 +325,7 @@ check_block(BLOCKNUM blocknum, int64_t UU(blocksize), int64_t UU(address), void } just_decompress_sub_block(&sb); - r = verify_ftnode_sub_block(&sb); + r = verify_ftnode_sub_block(&sb, nullptr, blocknum); if (r != 0) { printf(" Uncompressed child partition %d checksum failed.\n", i); failure++; diff --git a/storage/tokudb/PerconaFT/tools/tokuftdump.cc b/storage/tokudb/PerconaFT/tools/tokuftdump.cc index f6d777b4161..2838ae5182e 100644 --- a/storage/tokudb/PerconaFT/tools/tokuftdump.cc +++ b/storage/tokudb/PerconaFT/tools/tokuftdump.cc @@ -158,7 +158,8 @@ static void dump_descriptor(DESCRIPTOR d) { static void open_header(int fd, FT *header, CACHEFILE cf) { FT ft = NULL; int r; - r = toku_deserialize_ft_from (fd, MAX_LSN, &ft); + const char *fn = toku_cachefile_fname_in_env(cf); + r = toku_deserialize_ft_from (fd, fn, MAX_LSN, &ft); if (r != 0) { fprintf(stderr, "%s: can not deserialize from %s error %d\n", arg0, fname, r); exit(1); diff --git a/storage/tokudb/ha_tokudb.cc b/storage/tokudb/ha_tokudb.cc index 15276f2fb85..9079d15c7fd 100644 --- a/storage/tokudb/ha_tokudb.cc +++ b/storage/tokudb/ha_tokudb.cc @@ -532,51 +532,6 @@ typedef struct index_read_info { DBT* orig_key; } *INDEX_READ_INFO; -static int ai_poll_fun(void *extra, float progress) { - LOADER_CONTEXT context = (LOADER_CONTEXT)extra; - if (thd_killed(context->thd)) { - sprintf(context->write_status_msg, "The process has been killed, aborting add index."); - return ER_ABORTING_CONNECTION; - } - float percentage = progress * 100; - sprintf(context->write_status_msg, "Adding of indexes about %.1f%% done", percentage); - thd_proc_info(context->thd, context->write_status_msg); -#ifdef HA_TOKUDB_HAS_THD_PROGRESS - thd_progress_report(context->thd, (unsigned long long) percentage, 100); -#endif - return 0; -} - -static int loader_poll_fun(void *extra, float progress) { - LOADER_CONTEXT context = (LOADER_CONTEXT)extra; - if (thd_killed(context->thd)) { - sprintf(context->write_status_msg, "The process has been killed, aborting bulk load."); - return ER_ABORTING_CONNECTION; - } - float percentage = progress * 100; - sprintf(context->write_status_msg, "Loading of data about %.1f%% done", percentage); - thd_proc_info(context->thd, context->write_status_msg); -#ifdef HA_TOKUDB_HAS_THD_PROGRESS - thd_progress_report(context->thd, (unsigned long long) percentage, 100); -#endif - return 0; -} - -static void loader_ai_err_fun(DB *db, int i, int err, DBT *key, DBT *val, void *error_extra) { - LOADER_CONTEXT context = (LOADER_CONTEXT)error_extra; - assert_always(context->ha); - context->ha->set_loader_error(err); -} - -static void loader_dup_fun(DB *db, int i, int err, DBT *key, DBT *val, void *error_extra) { - LOADER_CONTEXT context = (LOADER_CONTEXT)error_extra; - assert_always(context->ha); - context->ha->set_loader_error(err); - if (err == DB_KEYEXIST) { - context->ha->set_dup_value_for_pk(key); - } -} - // // smart DBT callback function for optimize // in optimize, we want to flatten DB by doing @@ -3396,11 +3351,13 @@ void ha_tokudb::start_bulk_insert(ha_rows rows) { lc.thd = thd; lc.ha = this; - - error = loader->set_poll_function(loader, loader_poll_fun, &lc); + + error = loader->set_poll_function( + loader, ha_tokudb::bulk_insert_poll, &lc); assert_always(!error); - error = loader->set_error_callback(loader, loader_dup_fun, &lc); + error = loader->set_error_callback( + loader, ha_tokudb::loader_dup, &lc); assert_always(!error); trx->stmt_progress.using_loader = true; @@ -3413,6 +3370,47 @@ void ha_tokudb::start_bulk_insert(ha_rows rows) { } TOKUDB_HANDLER_DBUG_VOID_RETURN; } +int ha_tokudb::bulk_insert_poll(void* extra, float progress) { + LOADER_CONTEXT context = (LOADER_CONTEXT)extra; + if (thd_killed(context->thd)) { + sprintf(context->write_status_msg, + "The process has been killed, aborting bulk load."); + return ER_ABORTING_CONNECTION; + } + float percentage = progress * 100; + sprintf(context->write_status_msg, + "Loading of data t %s about %.1f%% done", + context->ha->share->full_table_name(), + percentage); + thd_proc_info(context->thd, context->write_status_msg); +#ifdef HA_TOKUDB_HAS_THD_PROGRESS + thd_progress_report(context->thd, (unsigned long long)percentage, 100); +#endif + return 0; +} +void ha_tokudb::loader_add_index_err(DB* db, + int i, + int err, + DBT* key, + DBT* val, + void* error_extra) { + LOADER_CONTEXT context = (LOADER_CONTEXT)error_extra; + assert_always(context->ha); + context->ha->set_loader_error(err); +} +void ha_tokudb::loader_dup(DB* db, + int i, + int err, + DBT* key, + DBT* val, + void* error_extra) { + LOADER_CONTEXT context = (LOADER_CONTEXT)error_extra; + assert_always(context->ha); + context->ha->set_loader_error(err); + if (err == DB_KEYEXIST) { + context->ha->set_dup_value_for_pk(key); + } +} // // Method that is called at the end of many calls to insert rows @@ -8179,12 +8177,14 @@ int ha_tokudb::tokudb_add_index( goto cleanup; } - error = indexer->set_poll_function(indexer, ai_poll_fun, &lc); + error = indexer->set_poll_function( + indexer, ha_tokudb::tokudb_add_index_poll, &lc); if (error) { goto cleanup; } - error = indexer->set_error_callback(indexer, loader_ai_err_fun, &lc); + error = indexer->set_error_callback( + indexer, ha_tokudb::loader_add_index_err, &lc); if (error) { goto cleanup; } @@ -8239,12 +8239,14 @@ int ha_tokudb::tokudb_add_index( goto cleanup; } - error = loader->set_poll_function(loader, loader_poll_fun, &lc); + error = + loader->set_poll_function(loader, ha_tokudb::bulk_insert_poll, &lc); if (error) { goto cleanup; } - error = loader->set_error_callback(loader, loader_ai_err_fun, &lc); + error = loader->set_error_callback( + loader, ha_tokudb::loader_add_index_err, &lc); if (error) { goto cleanup; } @@ -8451,6 +8453,24 @@ cleanup: thd_proc_info(thd, orig_proc_info); TOKUDB_HANDLER_DBUG_RETURN(error ? error : loader_error); } +int ha_tokudb::tokudb_add_index_poll(void* extra, float progress) { + LOADER_CONTEXT context = (LOADER_CONTEXT)extra; + if (thd_killed(context->thd)) { + sprintf(context->write_status_msg, + "The process has been killed, aborting add index."); + return ER_ABORTING_CONNECTION; + } + float percentage = progress * 100; + sprintf(context->write_status_msg, + "Adding of indexes to %s about %.1f%% done", + context->ha->share->full_table_name(), + percentage); + thd_proc_info(context->thd, context->write_status_msg); +#ifdef HA_TOKUDB_HAS_THD_PROGRESS + thd_progress_report(context->thd, (unsigned long long)percentage, 100); +#endif + return 0; +} // // Internal function called by ha_tokudb::add_index and ha_tokudb::alter_table_phase2 diff --git a/storage/tokudb/ha_tokudb.h b/storage/tokudb/ha_tokudb.h index a25e322568d..f90f4130b37 100644 --- a/storage/tokudb/ha_tokudb.h +++ b/storage/tokudb/ha_tokudb.h @@ -799,6 +799,19 @@ public: #else void start_bulk_insert(ha_rows rows); #endif + static int bulk_insert_poll(void* extra, float progress); + static void loader_add_index_err(DB* db, + int i, + int err, + DBT* key, + DBT* val, + void* error_extra); + static void loader_dup(DB* db, + int i, + int err, + DBT* key, + DBT* val, + void* error_extra); int end_bulk_insert(); int end_bulk_insert(bool abort); @@ -938,17 +951,23 @@ public: #endif private: - int tokudb_add_index( - TABLE *table_arg, - KEY *key_info, - uint num_of_keys, - DB_TXN* txn, - bool* inc_num_DBs, - bool* modified_DB - ); - void restore_add_index(TABLE* table_arg, uint num_of_keys, bool incremented_numDBs, bool modified_DBs); - int drop_indexes(TABLE *table_arg, uint *key_num, uint num_of_keys, KEY *key_info, DB_TXN* txn); - void restore_drop_indexes(TABLE *table_arg, uint *key_num, uint num_of_keys); + int tokudb_add_index(TABLE* table_arg, + KEY* key_info, + uint num_of_keys, + DB_TXN* txn, + bool* inc_num_DBs, + bool* modified_DB); + static int tokudb_add_index_poll(void *extra, float progress); + void restore_add_index(TABLE* table_arg, + uint num_of_keys, + bool incremented_numDBs, + bool modified_DBs); + int drop_indexes(TABLE* table_arg, + uint* key_num, + uint num_of_keys, + KEY* key_info, + DB_TXN* txn); + void restore_drop_indexes(TABLE* table_arg, uint* key_num, uint num_of_keys); public: // delete all rows from the table diff --git a/storage/tokudb/hatoku_hton.cc b/storage/tokudb/hatoku_hton.cc index 5e49e8d95d0..2ae9cdc071b 100644 --- a/storage/tokudb/hatoku_hton.cc +++ b/storage/tokudb/hatoku_hton.cc @@ -67,6 +67,7 @@ static bool tokudb_show_status( static void tokudb_handle_fatal_signal(handlerton* hton, THD* thd, int sig); #endif static int tokudb_close_connection(handlerton* hton, THD* thd); +static void tokudb_kill_connection(handlerton *hton, THD *thd); static int tokudb_commit(handlerton* hton, THD* thd, bool all); static int tokudb_rollback(handlerton* hton, THD* thd, bool all); #if TOKU_INCLUDE_XA @@ -343,6 +344,7 @@ static int tokudb_init_func(void *p) { tokudb_hton->create = tokudb_create_handler; tokudb_hton->close_connection = tokudb_close_connection; + tokudb_hton->kill_connection = tokudb_kill_connection; tokudb_hton->savepoint_offset = sizeof(SP_INFO_T); tokudb_hton->savepoint_set = tokudb_savepoint; @@ -766,6 +768,12 @@ static int tokudb_close_connection(handlerton* hton, THD* thd) { return error; } +void tokudb_kill_connection(handlerton *hton, THD *thd) { + TOKUDB_DBUG_ENTER(""); + db_env->kill_waiter(db_env, thd); + DBUG_VOID_RETURN; +} + bool tokudb_flush_logs(handlerton * hton) { TOKUDB_DBUG_ENTER(""); int error; diff --git a/storage/tokudb/mysql-test/tokudb/r/kill_query_blocked_in_lt.result b/storage/tokudb/mysql-test/tokudb/r/kill_query_blocked_in_lt.result new file mode 100644 index 00000000000..27423a840e8 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb/r/kill_query_blocked_in_lt.result @@ -0,0 +1,26 @@ +### connection default +CREATE TABLE t (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +INSERT INTO t (a, b) VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), +(6, 6), (7, 7), (8, 8), (9, 9), (10, 10), +(11, 11), (12, 12), (13, 13), (14, 14), (15, 15), +(16, 16), (17, 17), (18, 18), (19, 19), (20, 20); +### connection con1 +SET DEBUG_SYNC= 'toku_range_lock_granted_immediately SIGNAL lock_granted WAIT_FOR lock_granted_continue'; +UPDATE t SET b=1 WHERE a BETWEEN 5 AND 10; +### connection default +SET DEBUG_SYNC= 'now WAIT_FOR lock_granted'; +### connection con2 +SET DEBUG_SYNC= 'toku_range_lock_before_wait SIGNAL lock_not_granted WAIT_FOR lock_not_granted_continue'; +SET DEBUG_SYNC= 'toku_range_lock_not_granted_after_wait SIGNAL lock_not_granted_after_wait'; +UPDATE t SET b=1 WHERE a BETWEEN 5 AND 10; +### connection default +SET DEBUG_SYNC= 'now SIGNAL lock_not_granted_continue WAIT_FOR lock_not_granted'; +KILL QUERY con2_id +SET DEBUG_SYNC= 'now SIGNAL lock_granted_continue WAIT_FOR lock_not_granted_after_wait'; +### connection con1 +### reap +### connection con2 +### reap +ERROR 70100: Query execution was interrupted +### connection default +DROP TABLE t; diff --git a/storage/tokudb/mysql-test/tokudb/r/locks-select-update-3.result b/storage/tokudb/mysql-test/tokudb/r/locks-select-update-3.result index 8b31bf5a280..3f05f65661c 100644 --- a/storage/tokudb/mysql-test/tokudb/r/locks-select-update-3.result +++ b/storage/tokudb/mysql-test/tokudb/r/locks-select-update-3.result @@ -1,6 +1,4 @@ -SET DEFAULT_STORAGE_ENGINE='tokudb'; -drop table if exists t; -create table t (a int primary key, b int); +create table t (a int primary key, b int) engine=tokudb; insert into t values (1,0); set session transaction isolation level read committed; begin; @@ -8,6 +6,7 @@ select * from t where a=1 for update; a b 1 0 update t set b=b+1 where a=1; +set session tokudb_lock_timeout=60000; set session transaction isolation level read committed; begin; select * from t where a=1 for update; diff --git a/storage/tokudb/mysql-test/tokudb/t/kill_query_blocked_in_lt.test b/storage/tokudb/mysql-test/tokudb/t/kill_query_blocked_in_lt.test new file mode 100644 index 00000000000..7a79f73c89b --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb/t/kill_query_blocked_in_lt.test @@ -0,0 +1,56 @@ +--source include/have_tokudb.inc +--source include/have_debug_sync.inc + +--echo ### connection default + +CREATE TABLE t (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; + +INSERT INTO t (a, b) VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), + (6, 6), (7, 7), (8, 8), (9, 9), (10, 10), + (11, 11), (12, 12), (13, 13), (14, 14), (15, 15), + (16, 16), (17, 17), (18, 18), (19, 19), (20, 20); + +--connect(con1, localhost, root) +--connect(con2, localhost, root) + +--connection con1 +--echo ### connection con1 +SET DEBUG_SYNC= 'toku_range_lock_granted_immediately SIGNAL lock_granted WAIT_FOR lock_granted_continue'; +--send UPDATE t SET b=1 WHERE a BETWEEN 5 AND 10 + +--connection default +--echo ### connection default +SET DEBUG_SYNC= 'now WAIT_FOR lock_granted'; + +--connection con2 +--echo ### connection con2 +--let $con2_id= `SELECT CONNECTION_ID()` +SET DEBUG_SYNC= 'toku_range_lock_before_wait SIGNAL lock_not_granted WAIT_FOR lock_not_granted_continue'; +SET DEBUG_SYNC= 'toku_range_lock_not_granted_after_wait SIGNAL lock_not_granted_after_wait'; +--send UPDATE t SET b=1 WHERE a BETWEEN 5 AND 10 + +--connection default +--echo ### connection default +SET DEBUG_SYNC= 'now SIGNAL lock_not_granted_continue WAIT_FOR lock_not_granted'; + +--disable_query_log +--eval KILL QUERY $con2_id +--enable_query_log +--echo KILL QUERY con2_id +SET DEBUG_SYNC= 'now SIGNAL lock_granted_continue WAIT_FOR lock_not_granted_after_wait'; + +--connection con1 +--echo ### connection con1 +--echo ### reap +--reap + +--connection con2 +--echo ### connection con2 +--echo ### reap +--error ER_QUERY_INTERRUPTED +--reap + +--connection default +--echo ### connection default + +DROP TABLE t; diff --git a/storage/tokudb/mysql-test/tokudb/t/locks-select-update-3.test b/storage/tokudb/mysql-test/tokudb/t/locks-select-update-3.test index a563f061add..fcd89d5783f 100644 --- a/storage/tokudb/mysql-test/tokudb/t/locks-select-update-3.test +++ b/storage/tokudb/mysql-test/tokudb/t/locks-select-update-3.test @@ -1,12 +1,8 @@ source include/have_tokudb.inc; +source include/count_sessions.inc; # test that select for update is executed with serializable isolation -SET DEFAULT_STORAGE_ENGINE='tokudb'; - ---disable_warnings -drop table if exists t; ---enable_warnings -create table t (a int primary key, b int); +create table t (a int primary key, b int) engine=tokudb; insert into t values (1,0); set session transaction isolation level read committed; begin; @@ -15,6 +11,7 @@ select * from t where a=1 for update; # t2 update update t set b=b+1 where a=1; connect(conn1,localhost,root); +set session tokudb_lock_timeout=60000; set session transaction isolation level read committed; begin; # t2 select for update, should hang until t1 commits @@ -33,3 +30,4 @@ connection default; disconnect conn1; drop table t; +source include/wait_until_count_sessions.inc; diff --git a/storage/tokudb/mysql-test/tokudb_backup/r/rpl_safe_slave.result b/storage/tokudb/mysql-test/tokudb_backup/r/rpl_safe_slave.result index 13b5915354f..3f742690bd8 100644 --- a/storage/tokudb/mysql-test/tokudb_backup/r/rpl_safe_slave.result +++ b/storage/tokudb/mysql-test/tokudb_backup/r/rpl_safe_slave.result @@ -53,8 +53,6 @@ Variable_name Value Slave_open_temp_tables 0 ### Continue backup SET DEBUG_SYNC = "now SIGNAL ttlss_continue"; -## Reset debug_sync points -SET DEBUG_SYNC = "RESET"; ### Wait for backup finish include/filter_file.inc ### Slave tokubackup_slave_info content: diff --git a/storage/tokudb/mysql-test/tokudb_backup/t/rpl_safe_slave.inc b/storage/tokudb/mysql-test/tokudb_backup/t/rpl_safe_slave.inc index e0732ee63fc..9b795008eff 100644 --- a/storage/tokudb/mysql-test/tokudb_backup/t/rpl_safe_slave.inc +++ b/storage/tokudb/mysql-test/tokudb_backup/t/rpl_safe_slave.inc @@ -59,9 +59,6 @@ SHOW STATUS LIKE 'Slave_open_temp_tables'; --echo ### Continue backup SET DEBUG_SYNC = "now SIGNAL ttlss_continue"; ---echo ## Reset debug_sync points -SET DEBUG_SYNC = "RESET"; - --connection slave_2 --echo ### Wait for backup finish --reap diff --git a/storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc b/storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc new file mode 100644 index 00000000000..321f09353a1 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc @@ -0,0 +1,42 @@ +# +# This is a helper script for rpl_row_img.test. It creates +# all combinations MyISAM / InnoDB in a three server replication +# chain. Each engine combination is tested against the current +# seetings for binlog_row_image (on each server). +# +# The test script that is executed on every combination is the +# only argument to this wrapper script. See below. +# +# This script takes one parameter: +# - $row_img_test_script +# the name of the test script to include in every combination +# +# Sample usage: +# -- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +# -- source include/rpl_row_img_general_loop.test + + +-- let $engine_type_a= 2 +-- let $server_1_engine= TokuDB +while($engine_type_a) +{ + -- let $engine_type_b= 2 + -- let $server_2_engine= TokuDB + while($engine_type_b) + { + -- let $engine_type_c= 2 + -- let $server_3_engine= TokuDB + while($engine_type_c) + { + -- echo ### engines: $server_1_engine, $server_2_engine, $server_3_engine + -- source $row_img_test_script + + -- let $server_3_engine= InnoDB + -- dec $engine_type_c + } + -- let $server_2_engine= InnoDB + -- dec $engine_type_b + } + -- let $server_1_engine= InnoDB + -- dec $engine_type_a +} diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result index 59bd2585395..ca044213a31 100644 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result @@ -6,25 +6,25 @@ Note #### Storing MySQL user name or password information in the master info rep SET SQL_LOG_BIN= 0; CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, `c` INT DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, `c` INT DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; SET SQL_LOG_BIN= 1; CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, `c` INT DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', `c` INT DEFAULT 500, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; ************* EXECUTION WITH INSERTS ************* INSERT INTO t1(a,b,c) VALUES (1, null, 1); INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); @@ -90,10 +90,10 @@ DROP TABLE t4; include/sync_slave_sql_with_master.inc SET SQL_LOG_BIN= 0; CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL, -PRIMARY KEY (`a`)) ENGINE= Innodb; +PRIMARY KEY (`a`)) ENGINE= TokuDB; SET SQL_LOG_BIN= 1; CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, -PRIMARY KEY (`a`)) ENGINE= Innodb; +PRIMARY KEY (`a`)) ENGINE= TokuDB; ************* EXECUTION WITH INSERTS ************* INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); @@ -138,21 +138,21 @@ include/sync_slave_sql_with_master.inc ################################################################################ SET SQL_LOG_BIN= 0; CREATE TABLE t1(`a` INT NOT NULL, `b` INT, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t2(`a` INT NOT NULL, `b` INT, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t3(`a` INT NOT NULL, `b` INT, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; SET SQL_LOG_BIN= 1; CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, `c` INT NOT NULL, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, `c` INT, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, `c` INT DEFAULT 500, -PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; ************* EXECUTION WITH INSERTS ************* INSERT INTO t1(a) VALUES (1); INSERT INTO t1(a, b) VALUES (2, NULL); diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result index 5bff2ac389e..62714d1031c 100644 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result @@ -3,7 +3,7 @@ Warnings: Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. [connection master] -CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'INNODB' ; +CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'TokuDB' ; SELECT * FROM t1; C1 C2 include/sync_slave_sql_with_master.inc @@ -74,7 +74,7 @@ A B A I X Y X Z -CREATE TABLE t2 (c1 INT, c12 char(1), c2 INT, PRIMARY KEY (c1)) ENGINE = 'INNODB' ; +CREATE TABLE t2 (c1 INT, c12 char(1), c2 INT, PRIMARY KEY (c1)) ENGINE = 'TokuDB' ; INSERT INTO t2 VALUES (1,'A',2), (2,'A',4), (3,'A',9), (4,'A',15), (5,'A',25), (6,'A',35), (7,'A',50), (8,'A',64), (9,'A',81); @@ -184,7 +184,7 @@ c1 c12 c2 7 A 49 9 A 81 UPDATE t2 SET c12='X'; -CREATE TABLE t3 (C1 CHAR(1), C2 CHAR(1), pk1 INT, C3 CHAR(1), pk2 INT, PRIMARY KEY (pk1,pk2)) ENGINE = 'INNODB' ; +CREATE TABLE t3 (C1 CHAR(1), C2 CHAR(1), pk1 INT, C3 CHAR(1), pk2 INT, PRIMARY KEY (pk1,pk2)) ENGINE = 'TokuDB' ; INSERT INTO t3 VALUES ('A','B',1,'B',1), ('X','Y',2,'B',1), ('X','X',3,'B',1); INSERT INTO t3 VALUES ('A','C',1,'B',2), ('X','Z',2,'B',2), ('A','A',3,'B',2); SELECT * FROM t3 ORDER BY C1,C2; @@ -232,7 +232,7 @@ A B 1 B 1 A I 1 B 2 X Y 2 B 1 X Z 2 B 2 -CREATE TABLE t6 (C1 CHAR(1), C2 CHAR(1), C3 INT) ENGINE = 'INNODB' ; +CREATE TABLE t6 (C1 CHAR(1), C2 CHAR(1), C3 INT) ENGINE = 'TokuDB'; INSERT INTO t6 VALUES ('A','B',1), ('X','Y',2), ('X','X',3); INSERT INTO t6 VALUES ('A','C',4), ('X','Z',5), ('A','A',6); SELECT * FROM t6 ORDER BY C3; @@ -280,7 +280,7 @@ A B 1 X Y 2 A I 4 X Z 5 -CREATE TABLE t5 (C1 CHAR(1), C2 CHAR(1), C3 INT PRIMARY KEY) ENGINE = 'INNODB' ; +CREATE TABLE t5 (C1 CHAR(1), C2 CHAR(1), C3 INT PRIMARY KEY) ENGINE = 'TokuDB' ; INSERT INTO t5 VALUES ('A','B',1), ('X','Y',2), ('X','X',3); INSERT INTO t5 VALUES ('A','C',4), ('X','Z',5), ('A','A',6); UPDATE t5,t2,t3 SET t5.C2='Q', t2.c12='R', t3.C3 ='S' WHERE t5.C1 = t2.c12 AND t5.C1 = t3.C1; @@ -375,7 +375,7 @@ X Q 5 9 R 81 X Y 2 S 1 X Q 5 9 R 81 X Z 2 S 2 SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS; SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY'; -CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'INNODB' ; +CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'TokuDB' ; INSERT INTO t4 SET C1 = 1; SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1; C1 HEX(B1) HEX(B2) @@ -385,7 +385,7 @@ SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1; C1 HEX(B1) HEX(B2) 1 NULL 0 SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; -CREATE TABLE t7 (C1 INT PRIMARY KEY, C2 INT) ENGINE = 'INNODB' ; +CREATE TABLE t7 (C1 INT PRIMARY KEY, C2 INT) ENGINE = 'TokuDB' ; include/sync_slave_sql_with_master.inc --- on slave: original values --- INSERT INTO t7 VALUES (1,3), (2,6), (3,9); @@ -411,7 +411,7 @@ C1 C2 2 4 3 6 --- on master --- -CREATE TABLE t8 (a INT PRIMARY KEY, b INT UNIQUE, c INT UNIQUE) ENGINE = 'INNODB' ; +CREATE TABLE t8 (a INT PRIMARY KEY, b INT UNIQUE, c INT UNIQUE) ENGINE = 'TokuDB' ; INSERT INTO t8 VALUES (99,99,99); INSERT INTO t8 VALUES (99,22,33); ERROR 23000: Duplicate entry '99' for key 'PRIMARY' @@ -480,33 +480,33 @@ DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; include/sync_slave_sql_with_master.inc CREATE TABLE t1 (i INT NOT NULL, c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; CREATE TABLE t2 (i INT NOT NULL, c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; include/sync_slave_sql_with_master.inc ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; CREATE TABLE t3 (i INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; include/sync_slave_sql_with_master.inc ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; CREATE TABLE t4 (i INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; CREATE TABLE t5 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; include/sync_slave_sql_with_master.inc ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; CREATE TABLE t6 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; include/sync_slave_sql_with_master.inc ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; CREATE TABLE t7 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'INNODB' ; +j INT NOT NULL) ENGINE = 'TokuDB' ; SET @saved_slave_type_conversions = @@slave_type_conversions; SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY'; [expecting slave to replicate correctly] @@ -547,7 +547,7 @@ include/sync_slave_sql_with_master.inc include/diff_tables.inc [master:t7, slave:t7] drop table t1, t2, t3, t4, t5, t6, t7; include/sync_slave_sql_with_master.inc -CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='INNODB' ; +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='TokuDB'; INSERT INTO t1 VALUES (1), (2), (3); UPDATE t1 SET a = 10; ERROR 23000: Duplicate entry '10' for key 'PRIMARY' @@ -575,7 +575,7 @@ KEY `date_key` (`date_key`), KEY `time_key` (`time_key`), KEY `datetime_key` (`datetime_key`), KEY `varchar_key` (`varchar_key`) -) ENGINE='INNODB' ; +) ENGINE='TokuDB'; INSERT INTO t1 VALUES (1,8,5,'0000-00-00','0000-00-00','10:37:38','10:37:38','0000-00-00 00:00:00','0000-00-00 00:00:00','p','p'),(2,0,9,'0000-00-00','0000-00-00','00:00:00','00:00:00','2007-10-14 00:00:00','2007-10-14 00:00:00','d','d'); CREATE TABLE t2 ( `pk` int(11) NOT NULL AUTO_INCREMENT, @@ -595,7 +595,7 @@ KEY `date_key` (`date_key`), KEY `time_key` (`time_key`), KEY `datetime_key` (`datetime_key`), KEY `varchar_key` (`varchar_key`) -) ENGINE='INNODB' ; +) ENGINE='TokuDB'; INSERT INTO t2 VALUES (1,1,6,'2005-12-23','2005-12-23','02:24:28','02:24:28','0000-00-00 00:00:00','0000-00-00 00:00:00','g','g'),(2,0,3,'2009-09-14','2009-09-14','00:00:00','00:00:00','2000-01-30 16:39:40','2000-01-30 16:39:40','q','q'),(3,0,3,'0000-00-00','0000-00-00','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','c','c'),(4,1,6,'2007-03-29','2007-03-29','15:49:00','15:49:00','0000-00-00 00:00:00','0000-00-00 00:00:00','m','m'),(5,4,0,'2002-12-04','2002-12-04','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),(6,9,0,'2005-01-28','2005-01-28','00:00:00','00:00:00','2001-05-18 00:00:00','2001-05-18 00:00:00','w','w'),(7,6,0,'0000-00-00','0000-00-00','06:57:25','06:57:25','0000-00-00 00:00:00','0000-00-00 00:00:00','m','m'),(8,0,0,'0000-00-00','0000-00-00','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','z','z'),(9,4,6,'2006-08-15','2006-08-15','00:00:00','00:00:00','2002-04-12 14:44:25','2002-04-12 14:44:25','j','j'),(10,0,5,'2006-12-20','2006-12-20','10:13:53','10:13:53','2008-07-22 00:00:00','2008-07-22 00:00:00','y','y'),(11,9,7,'0000-00-00','0000-00-00','00:00:00','00:00:00','2004-07-05 00:00:00','2004-07-05 00:00:00','{','{'),(12,4,3,'2007-01-26','2007-01-26','23:00:51','23:00:51','2001-05-16 00:00:00','2001-05-16 00:00:00','f','f'),(13,7,0,'2004-03-27','2004-03-27','00:00:00','00:00:00','2005-01-24 03:30:37','2005-01-24 03:30:37','',''),(14,6,0,'2006-07-26','2006-07-26','18:43:57','18:43:57','0000-00-00 00:00:00','0000-00-00 00:00:00','{','{'),(15,0,6,'2000-01-14','2000-01-14','00:00:00','00:00:00','2000-09-21 00:00:00','2000-09-21 00:00:00','o','o'),(16,9,8,'0000-00-00','0000-00-00','21:15:08','21:15:08','0000-00-00 00:00:00','0000-00-00 00:00:00','a','a'),(17,2,0,'2004-10-27','2004-10-27','00:00:00','00:00:00','2004-03-24 22:13:43','2004-03-24 22:13:43','',''),(18,7,4,'0000-00-00','0000-00-00','08:38:27','08:38:27','2002-03-18 19:51:44','2002-03-18 19:51:44','t','t'),(19,5,3,'2008-03-07','2008-03-07','03:29:07','03:29:07','2007-12-01 18:44:44','2007-12-01 18:44:44','t','t'),(20,0,0,'2002-04-09','2002-04-09','16:06:03','16:06:03','2009-04-22 00:00:00','2009-04-22 00:00:00','n','n'); DELETE FROM t2 WHERE `int_key` < 3 LIMIT 1; UPDATE t1 SET `int_key` = 3 ORDER BY `pk` LIMIT 4; @@ -612,7 +612,7 @@ include/sync_slave_sql_with_master.inc include/diff_tables.inc [master:t2, slave:t2] DROP TABLE t1, t2; EOF OF TESTS -CREATE TABLE t1 (a int) ENGINE='INNODB' ; +CREATE TABLE t1 (a int) ENGINE='TokuDB'; INSERT IGNORE INTO t1 VALUES (NULL); INSERT INTO t1 ( a ) VALUES ( 0 ); INSERT INTO t1 ( a ) VALUES ( 9 ); @@ -631,7 +631,7 @@ drop table t1; include/sync_slave_sql_with_master.inc SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS; SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY'; -CREATE TABLE t1 (a bit) ENGINE='INNODB' ; +CREATE TABLE t1 (a bit) ENGINE='TokuDB'; INSERT IGNORE INTO t1 VALUES (NULL); INSERT INTO t1 ( a ) VALUES ( 0 ); UPDATE t1 SET a = 0 WHERE a = 1 LIMIT 3; diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result new file mode 100644 index 00000000000..2aeef4204f5 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result @@ -0,0 +1,15 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE t1 (a INT) ENGINE=tokudb; +begin; +insert into t1 values(1); +flush tables with read lock; +commit; +include/sync_slave_sql_with_master.inc +unlock tables; +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result new file mode 100644 index 00000000000..217520a59d4 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result @@ -0,0 +1,554 @@ +# +# Setup +# +# +# See if queries that use both auto_increment and LAST_INSERT_ID() +# are replicated well +# +# We also check how the foreign_key_check variable is replicated +# +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +SET @old_concurrent_insert= @@global.concurrent_insert; +SET @@global.concurrent_insert= 0; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b)) engine=tokudb; +insert into t1 values (1),(2),(3); +insert into t1 values (null); +insert into t2 values (null,last_insert_id()); +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +1 +2 +3 +4 +select * from t2 ORDER BY b; +b c +1 4 +drop table t1; +drop table t2; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=tokudb; +SET FOREIGN_KEY_CHECKS=0; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 values (null,last_insert_id()); +SET FOREIGN_KEY_CHECKS=1; +include/sync_slave_sql_with_master.inc +select * from t1; +a +10 +11 +12 +13 +select * from t2; +b c +5 0 +6 11 +# +# check if INSERT SELECT in auto_increment is well replicated (bug #490) +# +drop table t2; +drop table t1; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b)) engine=tokudb; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 (c) select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +10 +11 +12 +13 +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +drop table t1; +drop table t2; +include/sync_slave_sql_with_master.inc +# +# Bug#8412: Error codes reported in binary log for CHARACTER SET, +# FOREIGN_KEY_CHECKS +# +SET TIMESTAMP=1000000000; +CREATE TABLE t1 ( a INT UNIQUE ) engine=tokudb; +SET FOREIGN_KEY_CHECKS=0; +INSERT INTO t1 VALUES (1),(1); +Got one of the listed errors +include/sync_slave_sql_with_master.inc +drop table t1; +include/sync_slave_sql_with_master.inc +# +# Bug#14553: NULL in WHERE resets LAST_INSERT_ID +# +set @@session.sql_auto_is_null=1; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(a int) engine=tokudb; +insert into t1 (a) values (null); +insert into t2 (a) select a from t1 where a is null; +insert into t2 (a) select a from t1 where a is null; +select * from t2; +a +1 +include/sync_slave_sql_with_master.inc +select * from t2; +a +1 +drop table t1; +drop table t2; +# +# End of 4.1 tests +# +# +# BUG#15728: LAST_INSERT_ID function inside a stored function returns 0 +# +# The solution is not to reset last_insert_id on enter to sub-statement. +# +drop function if exists bug15728; +drop function if exists bug15728_insert; +drop table if exists t1, t2; +create table t1 ( +id int not null auto_increment, +last_id int, +primary key (id) +) engine=tokudb; +create function bug15728() returns int(11) +return last_insert_id(); +insert into t1 (last_id) values (0); +insert into t1 (last_id) values (last_insert_id()); +insert into t1 (last_id) values (bug15728()); +create table t2 ( +id int not null auto_increment, +last_id int, +primary key (id) +) engine=tokudb; +create function bug15728_insert() returns int(11) modifies sql data +begin +insert into t2 (last_id) values (bug15728()); +return bug15728(); +end| +create trigger t1_bi before insert on t1 for each row +begin +declare res int; +select bug15728_insert() into res; +set NEW.last_id = res; +end| +insert into t1 (last_id) values (0); +drop trigger t1_bi; +select last_insert_id(); +last_insert_id() +4 +select bug15728_insert(); +bug15728_insert() +2 +select last_insert_id(); +last_insert_id() +4 +insert into t1 (last_id) values (bug15728()); +select last_insert_id(); +last_insert_id() +5 +drop procedure if exists foo; +create procedure foo() +begin +declare res int; +insert into t2 (last_id) values (bug15728()); +insert into t1 (last_id) values (bug15728()); +end| +call foo(); +select * from t1; +id last_id +1 0 +2 1 +3 2 +4 1 +5 4 +6 3 +select * from t2; +id last_id +1 3 +2 4 +3 5 +include/sync_slave_sql_with_master.inc +select * from t1; +id last_id +1 0 +2 1 +3 2 +4 1 +5 4 +6 3 +select * from t2; +id last_id +1 3 +2 4 +3 5 +drop function bug15728; +drop function bug15728_insert; +drop table t1,t2; +drop procedure foo; +create table t1 (n int primary key auto_increment not null, +b int, unique(b)) engine=tokudb; +set sql_log_bin=0; +insert into t1 values(null,100); +replace into t1 values(null,50),(null,100),(null,150); +select * from t1 order by n; +n b +2 50 +3 100 +4 150 +truncate table t1; +set sql_log_bin=1; +insert into t1 values(null,100); +select * from t1 order by n; +n b +1 100 +include/sync_slave_sql_with_master.inc +insert into t1 values(null,200),(null,300); +delete from t1 where b <> 100; +select * from t1 order by n; +n b +1 100 +replace into t1 values(null,100),(null,350); +select * from t1 order by n; +n b +2 100 +3 350 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +2 100 +3 350 +insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000; +select * from t1 order by n; +n b +2 100 +4 400 +5 600 +1000 350 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +2 100 +4 400 +5 600 +1000 350 +drop table t1; +create table t1 (n int primary key auto_increment not null, +b int, unique(b)) engine=tokudb; +insert into t1 values(null,100); +select * from t1 order by n; +n b +1 100 +include/sync_slave_sql_with_master.inc +insert into t1 values(null,200),(null,300); +delete from t1 where b <> 100; +select * from t1 order by n; +n b +1 100 +insert into t1 values(null,100),(null,350) on duplicate key update n=2; +select * from t1 order by n; +n b +2 100 +3 350 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +2 100 +3 350 +drop table t1; +include/sync_slave_sql_with_master.inc +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT, +UNIQUE(b)) ENGINE=tokudb; +INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10; +SELECT * FROM t1 ORDER BY a; +a b +1 10 +2 2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY a; +a b +1 10 +2 2 +drop table t1; +CREATE TABLE t1 ( +id bigint(20) unsigned NOT NULL auto_increment, +field_1 int(10) unsigned NOT NULL, +field_2 varchar(255) NOT NULL, +field_3 varchar(255) NOT NULL, +PRIMARY KEY (id), +UNIQUE KEY field_1 (field_1, field_2) +) ENGINE=tokudb; +CREATE TABLE t2 ( +field_a int(10) unsigned NOT NULL, +field_b varchar(255) NOT NULL, +field_c varchar(255) NOT NULL +) ENGINE=tokudb; +INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e'); +INSERT INTO t1 (field_1, field_2, field_3) +SELECT t2.field_a, t2.field_b, t2.field_c +FROM t2 +ON DUPLICATE KEY UPDATE +t1.field_3 = t2.field_c; +INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f'); +INSERT INTO t1 (field_1, field_2, field_3) +SELECT t2.field_a, t2.field_b, t2.field_c +FROM t2 +ON DUPLICATE KEY UPDATE +t1.field_3 = t2.field_c; +SELECT * FROM t1 ORDER BY id; +id field_1 field_2 field_3 +1 1 a 1a +2 2 b 2b +3 3 c 3c +4 4 d 4d +5 5 e 5e +8 6 f 6f +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY id; +id field_1 field_2 field_3 +1 1 a 1a +2 2 b 2b +3 3 c 3c +4 4 d 4d +5 5 e 5e +8 6 f 6f +drop table t1, t2; +DROP PROCEDURE IF EXISTS p1; +DROP TABLE IF EXISTS t1, t2; +SELECT LAST_INSERT_ID(0); +LAST_INSERT_ID(0) +0 +CREATE TABLE t1 ( +id INT NOT NULL DEFAULT 0, +last_id INT, +PRIMARY KEY (id) +) ENGINE=tokudb; +CREATE TABLE t2 ( +id INT NOT NULL AUTO_INCREMENT, +last_id INT, +PRIMARY KEY (id) +) ENGINE=tokudb; +CREATE PROCEDURE p1() +BEGIN +INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID()); +INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID()); +END| +CALL p1(); +SELECT * FROM t1 ORDER BY id; +id last_id +0 1 +SELECT * FROM t2 ORDER BY id; +id last_id +1 0 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY id; +id last_id +0 1 +SELECT * FROM t2 ORDER BY id; +id last_id +1 0 +DROP PROCEDURE p1; +DROP TABLE t1, t2; +DROP PROCEDURE IF EXISTS p1; +DROP FUNCTION IF EXISTS f1; +DROP FUNCTION IF EXISTS f2; +DROP FUNCTION IF EXISTS f3; +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 ( +i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +j INT DEFAULT 0 +) ENGINE=tokudb; +CREATE TABLE t2 (i INT) ENGINE=tokudb; +CREATE PROCEDURE p1() +BEGIN +INSERT INTO t1 (i) VALUES (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +INSERT INTO t1 (i) VALUES (NULL), (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +END | +CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATA +BEGIN +INSERT INTO t1 (i) VALUES (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +INSERT INTO t1 (i) VALUES (NULL), (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +RETURN 0; +END | +CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC +RETURN LAST_INSERT_ID() | +CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA +BEGIN +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +RETURN 0; +END | +INSERT INTO t1 VALUES (NULL, -1); +CALL p1(); +SELECT f1(); +f1() +0 +INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()), +(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2()); +INSERT INTO t1 VALUES (NULL, f2()); +INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); +UPDATE t1 SET j= -1 WHERE i IS NULL; +INSERT INTO t1 (i) VALUES (NULL); +INSERT INTO t1 (i) VALUES (NULL); +SELECT f3(); +f3() +0 +SELECT * FROM t1 ORDER BY i; +i j +1 -1 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 3 +9 3 +10 3 +11 3 +12 3 +13 8 +14 -1 +15 13 +16 0 +17 0 +SELECT * FROM t2 ORDER BY i; +i +2 +3 +5 +6 +16 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +i j +1 -1 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 3 +9 3 +10 3 +11 3 +12 3 +13 8 +14 -1 +15 13 +16 0 +17 0 +SELECT * FROM t2; +i +2 +3 +5 +6 +16 +DROP PROCEDURE p1; +DROP FUNCTION f1; +DROP FUNCTION f2; +DROP FUNCTION f3; +DROP TABLE t1, t2; +include/sync_slave_sql_with_master.inc +# +# End of 5.0 tests +# +create table t2 ( +id int not null auto_increment, +last_id int, +primary key (id) +) engine=tokudb; +truncate table t2; +create table t1 (id tinyint primary key) engine=tokudb; +create function insid() returns int +begin +insert into t2 (last_id) values (0); +return 0; +end| +set sql_log_bin=0; +insert into t2 (id) values(1),(2),(3); +delete from t2; +set sql_log_bin=1; +select insid(); +insid() +0 +set sql_log_bin=0; +insert into t2 (id) values(5),(6),(7); +delete from t2 where id>=5; +set sql_log_bin=1; +insert into t1 select insid(); +select * from t1 order by id; +id +0 +select * from t2 order by id; +id last_id +4 0 +8 0 +include/sync_slave_sql_with_master.inc +select * from t1 order by id; +id +0 +select * from t2 order by id; +id last_id +4 0 +8 0 +drop table t1; +drop function insid; +truncate table t2; +create table t1 (n int primary key auto_increment not null, +b int, unique(b)) engine=tokudb; +create procedure foo() +begin +insert into t1 values(null,10); +insert ignore into t1 values(null,10); +insert ignore into t1 values(null,10); +insert into t2 values(null,3); +end| +call foo(); +select * from t1 order by n; +n b +1 10 +select * from t2 order by id; +id last_id +1 3 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +1 10 +select * from t2 order by id; +id last_id +1 3 +drop table t1, t2; +drop procedure foo; +SET @@global.concurrent_insert= @old_concurrent_insert; +set @@session.sql_auto_is_null=default; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result new file mode 100644 index 00000000000..cce5d6d42e6 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result @@ -0,0 +1,82 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT."); +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (1),(2),(3); +insert into t1 values (null); +insert into t2 values (null,last_insert_id()); +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +1 +2 +3 +4 +select * from t2 ORDER BY b; +b c +1 4 +drop table t1; +drop table t2; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=tokudb; +SET FOREIGN_KEY_CHECKS=0; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 values (null,last_insert_id()); +SET FOREIGN_KEY_CHECKS=1; +include/sync_slave_sql_with_master.inc +select * from t1; +a +10 +11 +12 +13 +select * from t2; +b c +5 0 +6 11 +drop table t2; +drop table t1; +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 (c) select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +10 +11 +12 +13 +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +drop table t1; +drop table t2; +include/sync_slave_sql_with_master.inc +SET TIMESTAMP=1000000000; +CREATE TABLE t1 ( a INT UNIQUE ); +SET FOREIGN_KEY_CHECKS=0; +INSERT INTO t1 VALUES (1),(1); +Got one of the listed errors +include/sync_slave_sql_with_master.inc +drop table t1; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result new file mode 100644 index 00000000000..4ff45b46bd2 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result @@ -0,0 +1,29 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); +CREATE TABLE t1 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +CREATE TABLE t2 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +INSERT INTO t1 VALUES (NULL, 0); +INSERT INTO t1 SELECT NULL, 0 FROM t1; +INSERT INTO t2 VALUES (NULL, 0), (NULL,1); +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +UPDATE t1, t2 SET t1.b = t2.b WHERE t1.a = t2.a; +include/sync_slave_sql_with_master.inc +drop table t1, t2; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result new file mode 100644 index 00000000000..d811ce42143 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result @@ -0,0 +1,60 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT'); +drop table if exists t1,t2; +CREATE TABLE t1 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +CREATE TABLE t2 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +INSERT INTO t1 VALUES (NULL, 0); +INSERT INTO t1 SELECT NULL, 0 FROM t1; +INSERT INTO t2 VALUES (NULL, 0), (NULL,1); +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +UPDATE t1, t2 SET t1.b = (t2.b+4) WHERE t1.a = t2.a; +SELECT * FROM t1 ORDER BY a; +a b +1 4 +2 5 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +SELECT * FROM t1 ORDER BY a; +a b +1 4 +2 5 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +drop table t1,t2; +include/sync_slave_sql_with_master.inc +reset master; +RESET MASTER; +CREATE TABLE t1 ( a INT ); +INSERT INTO t1 VALUES (0); +UPDATE t1, (SELECT 3 as b) AS x SET t1.a = x.b; +select * from t1; +a +3 +include/sync_slave_sql_with_master.inc +select * from t1; +a +3 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result new file mode 100644 index 00000000000..48de0f97072 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result @@ -0,0 +1,202 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); + +-------- Test for BUG#9361 -------- +CREATE TABLE t1 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +CREATE TABLE t2 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +INSERT INTO t1 VALUES (NULL, 0); +INSERT INTO t1 SELECT NULL, 0 FROM t1; +INSERT INTO t2 VALUES (NULL, 0), (NULL,1); +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +UPDATE t2, (SELECT a FROM t1 ORDER BY a) AS t SET t2.b = t.a+5 ; +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 6 +2 6 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 6 +2 6 +drop table t1,t2; + +-------- Test 1 for BUG#9361 -------- +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +CREATE TABLE t1 ( +a1 char(30), +a2 int, +a3 int, +a4 char(30), +a5 char(30) +); +CREATE TABLE t2 ( +b1 int, +b2 char(30) +); +INSERT INTO t1 VALUES ('Yes', 1, NULL, 'foo', 'bar'); +INSERT INTO t2 VALUES (1, 'baz'); +UPDATE t1 a, t2 +SET a.a1 = 'No' +WHERE a.a2 = +(SELECT b1 +FROM t2 +WHERE b2 = 'baz') +AND a.a3 IS NULL +AND a.a4 = 'foo' +AND a.a5 = 'bar'; +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +a1 a2 a3 a4 a5 +No 1 NULL foo bar +SELECT * FROM t2; +b1 b2 +1 baz +DROP TABLE t1, t2; + +-------- Test 2 for BUG#9361 -------- +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +CREATE TABLE t1 ( +i INT, +j INT, +x INT, +y INT, +z INT +); +CREATE TABLE t2 ( +i INT, +k INT, +x INT, +y INT, +z INT +); +CREATE TABLE t3 ( +j INT, +k INT, +x INT, +y INT, +z INT +); +INSERT INTO t1 VALUES ( 1, 2,13,14,15); +INSERT INTO t2 VALUES ( 1, 3,23,24,25); +INSERT INTO t3 VALUES ( 2, 3, 1,34,35), ( 2, 3, 1,34,36); +UPDATE t1 AS a +INNER JOIN t2 AS b +ON a.i = b.i +INNER JOIN t3 AS c +ON a.j = c.j AND b.k = c.k +SET a.x = b.x, +a.y = b.y, +a.z = ( +SELECT sum(z) +FROM t3 +WHERE y = 34 +) +WHERE b.x = 23; +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +i j x y z +1 2 23 24 71 +DROP TABLE t1, t2, t3; +DROP TABLE IF EXISTS t1; +Warnings: +Note 1051 Unknown table 'test.t1' +DROP TABLE IF EXISTS t2; +Warnings: +Note 1051 Unknown table 'test.t2' +CREATE TABLE t1 ( +idp int(11) NOT NULL default '0', +idpro int(11) default NULL, +price decimal(19,4) default NULL, +PRIMARY KEY (idp) +); +CREATE TABLE t2 ( +idpro int(11) NOT NULL default '0', +price decimal(19,4) default NULL, +nbprice int(11) default NULL, +PRIMARY KEY (idpro) +); +INSERT INTO t1 VALUES +(1,1,'3.0000'), +(2,2,'1.0000'), +(3,1,'1.0000'), +(4,1,'4.0000'), +(5,3,'2.0000'), +(6,2,'4.0000'); +INSERT INTO t2 VALUES +(1,'0.0000',0), +(2,'0.0000',0), +(3,'0.0000',0); +update +t2 +join +( select idpro, min(price) as min_price, count(*) as nbr_price +from t1 +where idpro>0 and price>0 +group by idpro +) as table_price +on t2.idpro = table_price.idpro +set t2.price = table_price.min_price, +t2.nbprice = table_price.nbr_price; +select "-- MASTER AFTER JOIN --" as ""; + +-- MASTER AFTER JOIN -- +select * from t1; +idp idpro price +1 1 3.0000 +2 2 1.0000 +3 1 1.0000 +4 1 4.0000 +5 3 2.0000 +6 2 4.0000 +select * from t2; +idpro price nbprice +1 1.0000 3 +2 1.0000 2 +3 2.0000 1 +include/sync_slave_sql_with_master.inc +select "-- SLAVE AFTER JOIN --" as ""; + +-- SLAVE AFTER JOIN -- +select * from t1; +idp idpro price +1 1 3.0000 +2 2 1.0000 +3 1 1.0000 +4 1 4.0000 +5 3 2.0000 +6 2 4.0000 +select * from t2; +idpro price nbprice +1 1.0000 3 +2 1.0000 2 +3 2.0000 1 +DROP TABLE t1, t2; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result new file mode 100644 index 00000000000..04578c3ff68 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result @@ -0,0 +1,2183 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); +################################################################################### +# PREPARE EXECUTION +################################################################################### +include/stop_slave.inc +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb; +ALTER TABLE mysql.slave_worker_info ENGINE= Innodb; +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +include/start_slave.inc +rpl_mixing_engines.inc [commands=configure] +CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1); +CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_tt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_nt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +RETURN "fc_i_nt_3_tt_3_suc"; +END| +CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id; +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +################################################################################### +# EXECUTE CASES CRASHING THE XID +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (9, 1); +fc_i_tt_5_suc (9, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (10, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (12, 4); +fc_i_tt_5_suc (12, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (13, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (15, 2); +fc_i_tt_5_suc (15, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (16, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (19, 1); +fc_i_tt_5_suc (19, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (20, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (22, 4); +fc_i_tt_5_suc (22, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (23, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (25, 2); +fc_i_tt_5_suc (25, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (26, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (29, 1); +fc_i_tt_5_suc (29, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (30, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (32, 4); +fc_i_tt_5_suc (32, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (33, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (35, 2); +fc_i_tt_5_suc (35, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (36, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (39, 1); +fc_i_tt_5_suc (39, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (40, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (42, 4); +fc_i_tt_5_suc (42, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (43, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (45, 2); +fc_i_tt_5_suc (45, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (46, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# EXECUTE CASES CRASHING THE BEGIN/COMMIT +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N] +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-func] +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_nt_5_suc (49, 1); +fc_i_nt_5_suc (49, 1) +fc_i_nt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# CHECK CONSISTENCY +################################################################################### +include/sync_slave_sql_with_master.inc +################################################################################### +# CLEAN +################################################################################### +rpl_mixing_engines.inc [commands=clean] +DROP TABLE tt_1; +DROP TABLE tt_2; +DROP TABLE tt_3; +DROP TABLE tt_4; +DROP TABLE tt_5; +DROP TABLE tt_6; +DROP TABLE nt_1; +DROP TABLE nt_2; +DROP TABLE nt_3; +DROP TABLE nt_4; +DROP TABLE nt_5; +DROP TABLE nt_6; +DROP PROCEDURE pc_i_tt_5_suc; +DROP PROCEDURE pc_i_nt_5_suc; +DROP FUNCTION fc_i_tt_5_suc; +DROP FUNCTION fc_i_nt_5_suc; +DROP FUNCTION fc_i_nt_3_tt_3_suc; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result new file mode 100644 index 00000000000..a0713d01593 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result @@ -0,0 +1,4739 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result new file mode 100644 index 00000000000..d86105a3440 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result @@ -0,0 +1,3681 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### Testing with TokuDB storage engine +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +#### case #1: AI: no values logged +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +INSERT INTO t1 VALUES (); +SELECT * FROM t1; +c1 +100 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +100 +SELECT * FROM t1; +c1 +100 +DROP TABLE t1; +include/rpl_sync.inc +#### case #2: AI: not empty but slave does not have usable data for its columns (INSERT) +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100, c2 int, primary key(c2)) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1(c2) VALUES (1); +SELECT * FROM t1; +c1 c2 +100 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +100 +SELECT * FROM t1; +c1 +100 +DROP TABLE t1; +include/rpl_sync.inc +#### case #3: BI: usable columns on the slave, AI: no usable columns on the slave +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100, c2 int) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1 VALUES (1,1); +SELECT * FROM t1; +c1 c2 +1 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +UPDATE t1 SET c2=2 WHERE c1=1 AND c2=1; +SELECT * FROM t1; +c1 c2 +1 2 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +DROP TABLE t1; +include/rpl_sync.inc +#### case #4: AI, BI: no usable columns on the slave (NOOP UPDATE). +#### +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100, c2 int, c3 int, primary key(c2)) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1 VALUES (1,1,1); +SELECT * FROM t1; +c1 c2 c3 +1 1 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +UPDATE t1 SET c3=300 WHERE c2=1; +SELECT * FROM t1; +c1 c2 c3 +1 1 300 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +DROP TABLE t1; +include/rpl_sync.inc +#### case #5: BI: no usable columns on the slave, AI: usable columns on the slave (slave must stop). +#### +CREATE TABLE t1 (c1 INT DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 INT DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 INT DEFAULT 100, c2 INT PRIMARY KEY) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1 VALUES (1,1); +SELECT * FROM t1; +c1 c2 +1 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +UPDATE t1 SET c1=300 WHERE c2=1; +SELECT * FROM t1; +c1 c2 +300 1 +SET SQL_LOG_BIN=0; +call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032"); +call mtr.add_suppression("Slave SQL: .*Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032"); +call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); +SET SQL_LOG_BIN=1; +include/wait_for_slave_sql_error_and_skip.inc [errno=1032] +DROP TABLE t1; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result new file mode 100644 index 00000000000..45a5e6ee341 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result @@ -0,0 +1,3522 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result new file mode 100644 index 00000000000..52906a7ee36 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result @@ -0,0 +1,3522 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result new file mode 100644 index 00000000000..e802156918e --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result @@ -0,0 +1,3505 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +### engines: TokuDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result new file mode 100644 index 00000000000..368b3b5f938 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result @@ -0,0 +1,3530 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +### engines: TokuDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result new file mode 100644 index 00000000000..bb6c3ea1c3e --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result @@ -0,0 +1,3530 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +### engines: TokuDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result new file mode 100644 index 00000000000..87ffbca71bc --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result @@ -0,0 +1,275 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +include/sync_slave_sql_with_master.inc +include/stop_slave.inc +include/wait_for_slave_to_stop.inc +reset master; +reset slave; +start slave; +include/wait_for_slave_to_start.inc +create table t1(n int not null auto_increment primary key)ENGINE=TokuDB; +insert into t1 values (NULL); +drop table t1; +create table t1 (word char(20) not null)ENGINE=TokuDB; +load data infile 'LOAD_FILE' into table t1 ignore 1 lines; +select count(*) from t1; +count(*) +69 +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +flush logs; +create table t3 (a int)ENGINE=TokuDB; +select * from t1 order by 1 asc; +word +Aarhus +Aaron +Aaron +Ababa +Ababa +aback +aback +abaft +abaft +abandon +abandon +abandoned +abandoned +abandoning +abandoning +abandonment +abandonment +abandons +abandons +abase +abased +abasement +abasements +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abatements +abater +abates +abating +Abba +abbe +abbey +abbeys +abbot +abbots +Abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +Abby +abdomen +abdomens +abdominal +abduct +abducted +abduction +abductions +abductor +abductors +abducts +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberration +include/sync_slave_sql_with_master.inc +select * from t1 order by 1 asc; +word +Aarhus +Aaron +Aaron +Ababa +Ababa +aback +aback +abaft +abaft +abandon +abandon +abandoned +abandoned +abandoning +abandoning +abandonment +abandonment +abandons +abandons +abase +abased +abasement +abasements +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abatements +abater +abates +abating +Abba +abbe +abbey +abbeys +abbot +abbots +Abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +Abby +abdomen +abdomens +abdominal +abduct +abducted +abduction +abductions +abductor +abductors +abducts +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberration +flush logs; +include/stop_slave.inc +include/start_slave.inc +create table t2 (n int)ENGINE=TokuDB; +insert into t2 values (1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +master-bin.000002 # Query # # BEGIN +master-bin.000002 # Table_map # # table_id: # (test.t2) +master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000002 # Xid # # COMMIT /* XID */ +show binary logs; +Log_name File_size +master-bin.000001 # +master-bin.000002 # +include/sync_slave_sql_with_master.inc +show binary logs; +Log_name File_size +slave-bin.000001 # +slave-bin.000002 # +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Table_map # # table_id: # (test.t2) +slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000002 # Xid # # COMMIT /* XID */ +include/check_slave_is_running.inc +show binlog events in 'slave-bin.000005' from 4; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +include/rpl_reset.inc +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result new file mode 100644 index 00000000000..d4a50261d60 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result @@ -0,0 +1,51 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +******** [ MASTER ] ******** +CREATE DATABASE BUG_37656; +use BUG_37656; +show databases like 'BUG_37656'; +Database (BUG_37656) +BUG_37656 +******** [ SLAVE ] ******** +show databases like 'bug_37656'; +Database (bug_37656) +bug_37656 +******** [ MASTER ] ******** +CREATE TABLE T1 (a int); +CREATE TABLE T2 (b int) ENGINE=TokuDB; +CREATE TABLE T3 (txt TEXT); +show tables; +Tables_in_BUG_37656 +T1 +T2 +T3 +******** [ SLAVE ] ******** +use bug_37656; +show tables; +Tables_in_bug_37656 +t2 +t3 +CREATE TABLE t1 (a INT); +******** [ MASTER ] ******** +use BUG_37656; +INSERT INTO T1 VALUES (1); +INSERT INTO T2 VALUES (1); +use test; +INSERT INTO BUG_37656.T1 VALUES (2); +INSERT INTO BUG_37656.T2 VALUES (2); +LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE BUG_37656.T3; +******** [ SLAVE ] ******** +include/diff_tables.inc [master:BUG_37656.T2, slave:bug_37656.t2] +include/diff_tables.inc [master:BUG_37656.T3, slave:bug_37656.t3] +******** [ MASTER ] ******** +DROP DATABASE BUG_37656; +include/rpl_reset.inc +CREATE DATABASE B50653; +USE B50653; +CREATE PROCEDURE b50653_proc() BEGIN SELECT 1; END; +DROP PROCEDURE b50653_proc; +DROP DATABASE B50653; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result new file mode 100644 index 00000000000..dc3a8a55741 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result @@ -0,0 +1,60 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +DROP PROCEDURE IF EXISTS test.p1; +DROP PROCEDURE IF EXISTS test.p2; +DROP TABLE IF EXISTS test.t1; +CREATE TABLE test.t1(a INT,PRIMARY KEY(a))ENGINE=TOKUDB; +CREATE PROCEDURE test.p1() +BEGIN +INSERT INTO test.t1 VALUES (4); +SELECT get_lock("test", 100); +UPDATE test.t1 set a=a+4 WHERE a=4; +END| +CREATE PROCEDURE test.p2() +BEGIN +UPDATE test.t1 SET a=a+1; +END| +SELECT get_lock("test", 200); +get_lock("test", 200) +1 +CALL test.p1(); +CALL test.p2(); +SELECT release_lock("test"); +release_lock("test") +1 +get_lock("test", 100) +1 +SELECT release_lock("test"); +release_lock("test") +1 +SELECT * FROM test.t1; +a +5 +include/sync_slave_sql_with_master.inc +SELECT * FROM test.t1; +a +5 +DROP TABLE IF EXISTS test.t1; +CREATE TABLE test.t1(a INT,PRIMARY KEY(a))ENGINE=TOKUDB; +CALL test.p2(); +CALL test.p1(); +get_lock("test", 100) +1 +SELECT release_lock("test"); +release_lock("test") +1 +SELECT * FROM test.t1; +a +8 +include/sync_slave_sql_with_master.inc +SELECT * FROM test.t1; +a +8 +DROP PROCEDURE IF EXISTS test.p1; +DROP PROCEDURE IF EXISTS test.p2; +DROP TABLE IF EXISTS test.t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result new file mode 100644 index 00000000000..b6fc475eeef --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result @@ -0,0 +1,47 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS p2; +CREATE TABLE IF NOT EXISTS t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=TokuDB; +CREATE TABLE IF NOT EXISTS t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=TokuDB; +CREATE PROCEDURE p1() +BEGIN +DECLARE done INT DEFAULT 0; +DECLARE spa CHAR(16); +DECLARE spb INT; +DECLARE cur1 CURSOR FOR SELECT name, +(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)--.' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=# +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Query # # use `test`; insert into t2 values (1) +slave-bin.000002 # Xid # # COMMIT /* XID */ +include/check_slave_is_running.inc +show binlog events in 'slave-bin.000005' from 4; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +include/rpl_reset.inc +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Intvar # # INSERT_ID=1 +master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, 1) +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Intvar # # LAST_INSERT_ID=1 +master-bin.000001 # Intvar # # INSERT_ID=5 +master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) +master-bin.000001 # Query # # COMMIT +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result new file mode 100644 index 00000000000..226a2b93140 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result @@ -0,0 +1,1773 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); +################################################################################### +# PREPARE EXECUTION +################################################################################### +include/stop_slave.inc +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb; +ALTER TABLE mysql.slave_worker_info ENGINE= Innodb; +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +include/start_slave.inc +rpl_mixing_engines.inc [commands=configure] +CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1); +CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_tt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_nt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +RETURN "fc_i_nt_3_tt_3_suc"; +END| +CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id; +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +################################################################################### +# EXECUTE CASES CRASHING THE XID +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (9, 1); +fc_i_tt_5_suc (9, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (10, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (12, 4); +fc_i_tt_5_suc (12, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(12,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(12,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (13, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (15, 2); +fc_i_tt_5_suc (15, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (16, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (19, 1); +fc_i_tt_5_suc (19, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(19,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(19,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (20, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (22, 4); +fc_i_tt_5_suc (22, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(22,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(22,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (23, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (25, 2); +fc_i_tt_5_suc (25, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(25,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(25,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (26, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (29, 1); +fc_i_tt_5_suc (29, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(29,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(29,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (30, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (32, 4); +fc_i_tt_5_suc (32, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(32,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(32,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (33, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (35, 2); +fc_i_tt_5_suc (35, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (36, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (39, 1); +fc_i_tt_5_suc (39, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (40, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (42, 4); +fc_i_tt_5_suc (42, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(42,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(42,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (43, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (45, 2); +fc_i_tt_5_suc (45, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (46, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# EXECUTE CASES CRASHING THE BEGIN/COMMIT +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N] +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-func] +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_nt_5_suc (49, 1); +fc_i_nt_5_suc (49, 1) +fc_i_nt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(49,1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(49,1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# CHECK CONSISTENCY +################################################################################### +include/sync_slave_sql_with_master.inc +################################################################################### +# CLEAN +################################################################################### +rpl_mixing_engines.inc [commands=clean] +DROP TABLE tt_1; +DROP TABLE tt_2; +DROP TABLE tt_3; +DROP TABLE tt_4; +DROP TABLE tt_5; +DROP TABLE tt_6; +DROP TABLE nt_1; +DROP TABLE nt_2; +DROP TABLE nt_3; +DROP TABLE nt_4; +DROP TABLE nt_5; +DROP TABLE nt_6; +DROP PROCEDURE pc_i_tt_5_suc; +DROP PROCEDURE pc_i_nt_5_suc; +DROP FUNCTION fc_i_tt_5_suc; +DROP FUNCTION fc_i_nt_5_suc; +DROP FUNCTION fc_i_nt_3_tt_3_suc; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result new file mode 100644 index 00000000000..e3d83733ed0 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result @@ -0,0 +1,48 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +******** [ MASTER ] ******** +CREATE DATABASE BUG_37656; +use BUG_37656; +show databases like 'BUG_37656'; +Database (BUG_37656) +BUG_37656 +******** [ SLAVE ] ******** +show databases like 'bug_37656'; +Database (bug_37656) +bug_37656 +******** [ MASTER ] ******** +CREATE TABLE T1 (a int); +CREATE TABLE T2 (b int) ENGINE=TokuDB; +CREATE TABLE T3 (txt TEXT); +show tables; +Tables_in_BUG_37656 +T1 +T2 +T3 +******** [ SLAVE ] ******** +use bug_37656; +show tables; +Tables_in_bug_37656 +t2 +t3 +CREATE TABLE t1 (a INT); +******** [ MASTER ] ******** +use BUG_37656; +INSERT INTO T1 VALUES (1); +INSERT INTO T2 VALUES (1); +LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE BUG_37656.T3; +******** [ SLAVE ] ******** +include/diff_tables.inc [master:BUG_37656.T2, slave:bug_37656.t2] +include/diff_tables.inc [master:BUG_37656.T3, slave:bug_37656.t3] +******** [ MASTER ] ******** +DROP DATABASE BUG_37656; +include/rpl_reset.inc +CREATE DATABASE B50653; +USE B50653; +CREATE PROCEDURE b50653_proc() BEGIN SELECT 1; END; +DROP PROCEDURE b50653_proc; +DROP DATABASE B50653; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test index 8fde1c3415b..53cf555ce64 100644 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test @@ -11,10 +11,10 @@ # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) # ################################################################################# ---source include/master-slave.inc --source include/have_tokudb.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc -let $engine=Innodb; +let $engine=TokuDB; --source extra/rpl_tests/rpl_not_null.test --source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test index d600137bec4..4c38646b112 100644 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test @@ -1,11 +1,11 @@ --- source include/have_tokudb.inc --- source include/have_binlog_format_row.inc --- source include/master-slave.inc +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc connection slave; let $bit_field_special = ALL_LOSSY; -let $type= 'INNODB' ; -let $extra_index= ; --- source extra/rpl_tests/rpl_row_basic.test +let $type = 'TokuDB'; +let $extra_index = ; +--source extra/rpl_tests/rpl_row_basic.test --source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test new file mode 100644 index 00000000000..783bee20307 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test @@ -0,0 +1,6 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=tokudb; +-- source extra/rpl_tests/rpl_commit_after_flush.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt new file mode 100644 index 00000000000..d03d176150d --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt @@ -0,0 +1 @@ +${?PB_HOST_SPECIFIC_MYSQLD_ARGS} diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt new file mode 100644 index 00000000000..d03d176150d --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt @@ -0,0 +1 @@ +${?PB_HOST_SPECIFIC_MYSQLD_ARGS} diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test new file mode 100644 index 00000000000..b14aba2263f --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test @@ -0,0 +1,7 @@ +################################# +# Wrapper for rpl_insert_id.test# +################################# +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=tokudb; +-- source extra/rpl_tests/rpl_insert_id.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test new file mode 100644 index 00000000000..f0302114e5a --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test @@ -0,0 +1,7 @@ +################################# +# Wrapper for rpl_insert_id.test# +################################# +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=tokudb; +-- source extra/rpl_tests/rpl_insert_id_pk.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test new file mode 100644 index 00000000000..06a760ca2a8 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test @@ -0,0 +1,4 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_multi_update.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt new file mode 100644 index 00000000000..17d4171af0e --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt @@ -0,0 +1 @@ +--replicate-ignore-table=nothing.sensible diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test new file mode 100644 index 00000000000..729895d1bbb --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test @@ -0,0 +1,14 @@ +####################################################### +# Wrapper for rpl_multi_update2.test to allow multi # +# Engines to reuse test code. By JBM 2006-02-15 # +# Added comments section and to skip when ndb is # +# Default engine. # +####################################################### +--source include/not_gtid_enabled.inc +--source include/not_ndb_default.inc +--source include/have_tokudb.inc +--source include/master-slave.inc +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT'); +let $engine_type=TokuDB; +--source extra/rpl_tests/rpl_multi_update2.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test new file mode 100644 index 00000000000..18a906664a0 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test @@ -0,0 +1,13 @@ +####################################################### +# Wrapper for rpl_multi_update3.test to allow multi # +# Engines to reuse test code. By JBM 2006-02-15 # +# Added comments section and to skip when ndb is # +# Default engine. # +####################################################### +--source include/have_tokudb.inc +--source include/not_ndb_default.inc +--source include/master-slave.inc +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); +let $engine_type=TokuDB; +--source extra/rpl_tests/rpl_multi_update3.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt new file mode 100644 index 00000000000..e980c2de7ff --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt @@ -0,0 +1 @@ +--transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt new file mode 100644 index 00000000000..264c5c1a4b4 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt @@ -0,0 +1 @@ +--skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1 --transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test new file mode 100644 index 00000000000..6bd79691528 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test @@ -0,0 +1,19 @@ +# This test takes long time, so only run it with the --big-test mtr-flag. +--source include/big_test.inc +--source include/not_embedded.inc +--source include/not_valgrind.inc +--source include/have_debug.inc +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/not_mts_slave_parallel_workers.inc +--source include/master-slave.inc + +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); + +let $engine_type=TokuDB; +let $database_name=test; +--source extra/rpl_tests/rpl_crash_safe.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test new file mode 100644 index 00000000000..a52e96dc19d --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test @@ -0,0 +1,53 @@ +#Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc + +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +# +# This file contains tests for WL#5096. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +# +# WL#5096 Tests. +# + +# +# Tests combinations of binlog-row-image against mixes of MyISAM and InnoDB +# storage engines on all three servers. +# +# All the combinarions need not to be separated into their own files as +# the tests for indexes and engines mixes are, because noblobs test script +# does not take too long time, thence we do not risk triggering PB2 timeout +# on valgrind runs. +# + +## NOBLOB + +-- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +## MINIMAL + +-- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +## FULL + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test new file mode 100644 index 00000000000..cfbc6519182 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test @@ -0,0 +1,50 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096 and bug fixes. +# + +-- source include/have_binlog_format_row.inc +-- source include/not_gtid_enabled.inc + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests for different storage engines on each server, +# but same index structure on tables. The tests are conducted +# using FULL binlog-row-image on all servers. +# + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +# +# BUG#49100 +# + +-- echo ### Testing with TokuDB storage engine + +-- let $engine=TokuDB +-- source extra/rpl_tests/rpl_row_empty_imgs.test + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test new file mode 100644 index 00000000000..4c832208feb --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test @@ -0,0 +1,42 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096 and bug fixes. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests for different storage engines on each server, +# but same index structure on tables. The tests are conducted +# using MINIMAL binlog-row-image on all servers. +# + +-- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test new file mode 100644 index 00000000000..00b6448ad72 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test @@ -0,0 +1,42 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096 and bug fixes. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests for different storage engines on each server, +# but same index structure on tables. The tests are conducted +# using NOBLOB binlog-row-image on all servers. +# + +-- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test new file mode 100644 index 00000000000..6f683776c3c --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test @@ -0,0 +1,38 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 Tests. +# + +# +# Tests FULL image against a mix of MyISAM and InnoDB engines on +# each of the three servers. +# + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test new file mode 100644 index 00000000000..030bc655291 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test @@ -0,0 +1,41 @@ +#Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096. +# + +--let $rpl_topology= 1->2->3 +--source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 Tests. +# + +# +# Tests MINIMAL image against a mix of MyISAM and InnoDB engines on +# each of the three servers. +# + +-- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test new file mode 100644 index 00000000000..785f79bccdc --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test @@ -0,0 +1,41 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests NOBLOB image against a mix of MyISAM and InnoDB engines on +# each of the three servers. +# + +-- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt new file mode 100644 index 00000000000..773ec62bef2 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt @@ -0,0 +1,2 @@ +--skip-external-locking +--default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test new file mode 100644 index 00000000000..bc624d4d89c --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test @@ -0,0 +1,15 @@ +################################### +# Wrapper for rpl_row_log.test # +# Added wrapper so that MyISAM & # +# Innodb and NDB could all use the# +# Same test. NDB produced a diff # +# bin-log # +################################### +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_log.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt new file mode 100644 index 00000000000..8be29bbe976 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt @@ -0,0 +1 @@ +--replicate-do-db=bug_37656 --replicate-ignore-table=bug_37656.t1 --replicate-do-table=bug_37656.t2 --replicate-do-table=bug_37656.t3 --lower-case-table-names=1 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test new file mode 100644 index 00000000000..56599f3c1ad --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test @@ -0,0 +1,14 @@ +# BUG#37656 +# +# For details look into extra/rpl_tests/rpl_lower_case_table_names.test +# + +-- source include/not_gtid_enabled.inc +-- source include/have_tokudb.inc +-- source include/not_windows.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc + +-- let $engine=TokuDB +-- source extra/rpl_tests/rpl_lower_case_table_names.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test new file mode 100644 index 00000000000..38ea65061fe --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test @@ -0,0 +1,14 @@ +################################# +# Wrapper for rpl_row_sp003.test# +################################# +######################################################## +# By JBM 2005-02-15 Wrapped to allow reuse of test code# +# Added to skip if ndb is default # +######################################################## +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +let $engine_type=TOKUDB; +-- source extra/rpl_tests/rpl_row_sp003.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test new file mode 100644 index 00000000000..41eececc198 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test @@ -0,0 +1,14 @@ +################################# +# Wrapper for rpl_row_sp006.test# +################################# +######################################################## +# By JBM 2005-02-15 Wrapped to allow reuse of test code# +# Added to skip if ndb is default # +######################################################## +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_row_sp006.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test new file mode 100644 index 00000000000..ad4ea1a2a57 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test @@ -0,0 +1,19 @@ +############################################################################# +# Original Author: JBM # +# Original Date: Oct/18/2005 # +############################################################################# +# TEST: Use before insert triggers and has the second insert fail # +############################################################################# +# Change by JBM 2006-02-14 added to skip when NDB default engine # +# This test has been wrapped to allow multipal engines to use same code # +############################################################################# + +# Includes +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TOKUDB; +-- source extra/rpl_tests/rpl_trig004.test + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt new file mode 100644 index 00000000000..773ec62bef2 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt @@ -0,0 +1,2 @@ +--skip-external-locking +--default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test new file mode 100644 index 00000000000..42eb4961dce --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test @@ -0,0 +1,15 @@ +################################### +# Wrapper for rpl_row_log.test # +# Added wrapper so that MyISAM & # +# Innodb and NDB could all use the# +# Same test. NDB produced a diff # +# bin-log # +################################### +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_statement.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_log.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt new file mode 100644 index 00000000000..e980c2de7ff --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt @@ -0,0 +1 @@ +--transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt new file mode 100644 index 00000000000..264c5c1a4b4 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt @@ -0,0 +1 @@ +--skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1 --transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test new file mode 100644 index 00000000000..724550fae4a --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test @@ -0,0 +1,18 @@ +--source include/big_test.inc +--source include/not_embedded.inc +--source include/not_valgrind.inc +--source include/have_debug.inc +--source include/have_tokudb.inc +--source include/have_binlog_format_mixed_or_statement.inc +--source include/not_mts_slave_parallel_workers.inc +--source include/master-slave.inc + +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); + +let $engine_type=TokuDB; +let $database_name=test; +--source extra/rpl_tests/rpl_crash_safe.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt new file mode 100644 index 00000000000..8be29bbe976 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt @@ -0,0 +1 @@ +--replicate-do-db=bug_37656 --replicate-ignore-table=bug_37656.t1 --replicate-do-table=bug_37656.t2 --replicate-do-table=bug_37656.t3 --lower-case-table-names=1 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test new file mode 100644 index 00000000000..2a7e690f27a --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test @@ -0,0 +1,14 @@ +# BUG#37656 +# +# For details look into extra/rpl_tests/rpl_lower_case_table_names.test +# + +-- source include/not_gtid_enabled.inc +-- source include/have_tokudb.inc +-- source include/not_windows.inc +-- source include/have_binlog_format_mixed_or_statement.inc +-- source include/master-slave.inc + +-- let $engine=TokuDB +-- source extra/rpl_tests/rpl_lower_case_table_names.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/tokudb_information_schema.cc b/storage/tokudb/tokudb_information_schema.cc index 6cdd9b275fb..fb9e76f340b 100644 --- a/storage/tokudb/tokudb_information_schema.cc +++ b/storage/tokudb/tokudb_information_schema.cc @@ -73,7 +73,8 @@ int trx_callback( void *extra) { uint64_t txn_id = txn->id64(txn); - uint64_t client_id = txn->get_client_id(txn); + uint64_t client_id; + txn->get_client_id(txn, &client_id, NULL); uint64_t start_time = txn->get_start_time(txn); trx_extra_t* e = reinterpret_cast(extra); THD* thd = e->thd; @@ -312,7 +313,8 @@ int locks_callback( void* extra) { uint64_t txn_id = txn->id64(txn); - uint64_t client_id = txn->get_client_id(txn); + uint64_t client_id; + txn->get_client_id(txn, &client_id, NULL); locks_extra_t* e = reinterpret_cast(extra); THD* thd = e->thd; TABLE* table = e->table; diff --git a/storage/tokudb/tokudb_txn.h b/storage/tokudb/tokudb_txn.h index 67bf591d088..d0255415403 100644 --- a/storage/tokudb/tokudb_txn.h +++ b/storage/tokudb/tokudb_txn.h @@ -116,7 +116,7 @@ inline int txn_begin( int r = env->txn_begin(env, parent, txn, flags); if (r == 0 && thd) { DB_TXN* this_txn = *txn; - this_txn->set_client_id(this_txn, thd_get_thread_id(thd)); + this_txn->set_client_id(this_txn, thd_get_thread_id(thd), thd); } TOKUDB_TRACE_FOR_FLAGS( TOKUDB_DEBUG_TXN, -- cgit v1.2.1 From 13e4bf674e26065cefce6746c7c52afdad5ce8ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Wed, 2 Aug 2017 19:05:48 +0300 Subject: Fix tokudb compilation post merge --- storage/tokudb/PerconaFT/portability/toku_debug_sync.h | 2 +- storage/tokudb/PerconaFT/tools/CMakeLists.txt | 2 +- storage/tokudb/hatoku_hton.cc | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) (limited to 'storage') diff --git a/storage/tokudb/PerconaFT/portability/toku_debug_sync.h b/storage/tokudb/PerconaFT/portability/toku_debug_sync.h index 4a959cab1fe..b5394e58d68 100644 --- a/storage/tokudb/PerconaFT/portability/toku_debug_sync.h +++ b/storage/tokudb/PerconaFT/portability/toku_debug_sync.h @@ -67,7 +67,7 @@ inline void toku_debug_sync(struct tokutxn *txn, const char *sync_point_name) { toku_txn_get_client_id(txn, &client_id, &client_extra); thd = reinterpret_cast(client_extra); - debug_sync(thd, sync_point_name, strlen(sync_point_name)); + DEBUG_SYNC(thd, sync_point_name); } #else // defined(ENABLED_DEBUG_SYNC) diff --git a/storage/tokudb/PerconaFT/tools/CMakeLists.txt b/storage/tokudb/PerconaFT/tools/CMakeLists.txt index daaff5eb379..e6540bf69be 100644 --- a/storage/tokudb/PerconaFT/tools/CMakeLists.txt +++ b/storage/tokudb/PerconaFT/tools/CMakeLists.txt @@ -10,7 +10,7 @@ foreach(tool ${tools}) if (DEFINED MYSQL_PROJECT_NAME_DOCSTRING) if ((CMAKE_BUILD_TYPE MATCHES "Debug") AND (CMAKE_CXX_FLAGS_DEBUG MATCHES " -DENABLED_DEBUG_SYNC")) - target_link_libraries(${tool} sql binlog rpl master slave) + target_link_libraries(${tool} sql) endif() endif () diff --git a/storage/tokudb/hatoku_hton.cc b/storage/tokudb/hatoku_hton.cc index e0f92b17fce..76ce6bec0fc 100644 --- a/storage/tokudb/hatoku_hton.cc +++ b/storage/tokudb/hatoku_hton.cc @@ -55,7 +55,7 @@ static bool tokudb_show_status( static void tokudb_handle_fatal_signal(handlerton* hton, THD* thd, int sig); #endif static int tokudb_close_connection(handlerton* hton, THD* thd); -static void tokudb_kill_connection(handlerton *hton, THD *thd); +static void tokudb_kill_connection(handlerton *hton, THD *thd, enum thd_kill_levels level); static int tokudb_commit(handlerton* hton, THD* thd, bool all); static int tokudb_rollback(handlerton* hton, THD* thd, bool all); #if TOKU_INCLUDE_XA @@ -332,7 +332,7 @@ static int tokudb_init_func(void *p) { tokudb_hton->create = tokudb_create_handler; tokudb_hton->close_connection = tokudb_close_connection; - tokudb_hton->kill_connection = tokudb_kill_connection; + tokudb_hton->kill_query = tokudb_kill_connection; tokudb_hton->savepoint_offset = sizeof(SP_INFO_T); tokudb_hton->savepoint_set = tokudb_savepoint; @@ -756,7 +756,8 @@ static int tokudb_close_connection(handlerton* hton, THD* thd) { return error; } -void tokudb_kill_connection(handlerton *hton, THD *thd) { +void tokudb_kill_connection(handlerton *hton, THD *thd, + enum thd_kill_levels level) { TOKUDB_DBUG_ENTER(""); db_env->kill_waiter(db_env, thd); DBUG_VOID_RETURN; -- cgit v1.2.1 From e35670f49804399a208671901fd6f755647c49e2 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 3 Aug 2017 19:28:05 +0300 Subject: MDEV-12972 Random and Frequent Segfault Problem was a memory overflow in MRR Reviewed by Sergei Petruna. Testcase by Elena --- .../mysql-test/tokudb_mariadb/r/mdev12972.result | 19 ++++++++++++++++ .../mysql-test/tokudb_mariadb/t/mdev12972.test | 26 ++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result create mode 100644 storage/tokudb/mysql-test/tokudb_mariadb/t/mdev12972.test (limited to 'storage') diff --git a/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result b/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result new file mode 100644 index 00000000000..fce77f1647d --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result @@ -0,0 +1,19 @@ +CREATE TABLE t1 (pk INT PRIMARY KEY, i1 INT, c1 VARCHAR(1), KEY(c1)) ENGINE=TokuDB; +INSERT INTO t1 VALUES +(1,2,NULL),(2,5,'x'),(3,3,'i'),(4,1,'e'),(5,4,'p'); +CREATE TABLE t2 (i2 INT) ENGINE=TokuDB; +INSERT INTO t2 VALUES (1),(2); +CREATE TABLE t3 (i3 INT, c3 VARCHAR(1), KEY(i3)) ENGINE=TokuDB; +INSERT INTO t3 VALUES +(1,'e'),(1,'z'),(1,'i'),(1,'q'),(1,'i'),(1,'f'),(1,'m'),(2,'c'),(1,'d'), +(2,'n'),(1,'t'),(2,'e'),(1,'w'),(2,'y'),(1,'j'),(2,'i'),(1,'f'),(2,'f'), +(1,'s'),(2,'y'); +SET join_cache_level = 8; +SET optimizer_switch ='mrr=on,mrr_sort_keys=on,optimize_join_buffer_size=on'; +SELECT * FROM t1 AS t1_outer WHERE EXISTS ( SELECT * FROM t2 WHERE i2 IN ( SELECT i3 FROM t3 INNER JOIN t1 AS t1_inner ON (t1_inner.c1 = c3 ) WHERE t1_inner.i1 < t1_outer.i1 ) ); +pk i1 c1 +1 2 NULL +2 5 x +3 3 i +5 4 p +DROP TABLE t1, t2, t3; diff --git a/storage/tokudb/mysql-test/tokudb_mariadb/t/mdev12972.test b/storage/tokudb/mysql-test/tokudb_mariadb/t/mdev12972.test new file mode 100644 index 00000000000..9d136ff0c65 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_mariadb/t/mdev12972.test @@ -0,0 +1,26 @@ +# +# MDEV-12972 Random and Frequent Segfault (SIG 11) During Runtime +# +# This was actually a memory overrun in MRR that TokuDB triggered +# + +CREATE TABLE t1 (pk INT PRIMARY KEY, i1 INT, c1 VARCHAR(1), KEY(c1)) ENGINE=TokuDB; +INSERT INTO t1 VALUES +(1,2,NULL),(2,5,'x'),(3,3,'i'),(4,1,'e'),(5,4,'p'); + +CREATE TABLE t2 (i2 INT) ENGINE=TokuDB; +INSERT INTO t2 VALUES (1),(2); + +CREATE TABLE t3 (i3 INT, c3 VARCHAR(1), KEY(i3)) ENGINE=TokuDB; +INSERT INTO t3 VALUES +(1,'e'),(1,'z'),(1,'i'),(1,'q'),(1,'i'),(1,'f'),(1,'m'),(2,'c'),(1,'d'), +(2,'n'),(1,'t'),(2,'e'),(1,'w'),(2,'y'),(1,'j'),(2,'i'),(1,'f'),(2,'f'), +(1,'s'),(2,'y'); + +SET join_cache_level = 8; +SET optimizer_switch ='mrr=on,mrr_sort_keys=on,optimize_join_buffer_size=on'; + +--sorted_result +SELECT * FROM t1 AS t1_outer WHERE EXISTS ( SELECT * FROM t2 WHERE i2 IN ( SELECT i3 FROM t3 INNER JOIN t1 AS t1_inner ON (t1_inner.c1 = c3 ) WHERE t1_inner.i1 < t1_outer.i1 ) ); + +DROP TABLE t1, t2, t3; -- cgit v1.2.1 From d5164569e46a927a83b9789d98a7ca5bc71eb116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Thu, 3 Aug 2017 22:15:19 +0300 Subject: Move tokudb_rpl to rpl-tokudb suite --- storage/tokudb/mysql-test/rpl/combinations | 8 + .../include/rpl_tokudb_row_img_general_loop.inc | 42 + .../mysql-test/rpl/r/rpl_deadlock_tokudb.result | 143 + .../rpl/r/rpl_extra_col_master_tokudb.result | 859 ++++ .../rpl/r/rpl_extra_col_slave_tokudb.result | 552 +++ .../mysql-test/rpl/r/rpl_mixed_row_tokudb.result | 132 + .../mysql-test/rpl/r/rpl_not_null_tokudb.result | 210 + .../mysql-test/rpl/r/rpl_parallel_tokudb.result | 73 + .../rpl/r/rpl_parallel_tokudb_delete_pk.result | 29 + ...pl_parallel_tokudb_update_pk_uc0_lookup0.result | 39 + .../rpl/r/rpl_parallel_tokudb_write_pk.result | 23 + .../mysql-test/rpl/r/rpl_partition_tokudb.result | 150 + .../mysql-test/rpl/r/rpl_relay_space_tokudb.result | 27 + .../r/rpl_rfr_disable_on_expl_pk_absence.result | 47 + .../mysql-test/rpl/r/rpl_row_basic_3tokudb.result | 679 +++ .../mysql-test/rpl/r/rpl_row_blob_tokudb.result | 161 + .../mysql-test/rpl/r/rpl_row_log_tokudb.result | 275 ++ .../rpl/r/rpl_row_rec_comp_tokudb.result | 37 + .../mysql-test/rpl/r/rpl_row_sp002_tokudb.result | 233 + .../mysql-test/rpl/r/rpl_row_sp007_tokudb.result | 48 + .../rpl/r/rpl_row_tabledefs_3tokudb.result | 190 + .../mysql-test/rpl/r/rpl_set_null_tokudb.result | 31 + .../tokudb/mysql-test/rpl/r/rpl_stm_tokudb.result | 138 + .../mysql-test/rpl/r/rpl_tokudb_bug28430.result | 145 + .../mysql-test/rpl/r/rpl_tokudb_bug30888.result | 35 + .../rpl/r/rpl_tokudb_commit_after_flush.result | 15 + .../mysql-test/rpl/r/rpl_tokudb_delete_pk.result | 27 + .../rpl/r/rpl_tokudb_delete_pk_lookup1.result | 27 + .../mysql-test/rpl/r/rpl_tokudb_insert_id.result | 554 +++ .../rpl/r/rpl_tokudb_insert_id_pk.result | 82 + .../mysql-test/rpl/r/rpl_tokudb_mixed_ddl.result | 159 + .../mysql-test/rpl/r/rpl_tokudb_mixed_dml.result | 1109 +++++ .../rpl/r/rpl_tokudb_multi_update.result | 29 + .../rpl/r/rpl_tokudb_multi_update2.result | 60 + .../rpl/r/rpl_tokudb_multi_update3.result | 202 + .../rpl/r/rpl_tokudb_read_only_ff.result | 24 + .../rpl/r/rpl_tokudb_read_only_ft.result | 24 + .../rpl/r/rpl_tokudb_read_only_tf.result | 24 + .../rpl/r/rpl_tokudb_read_only_tt.result | 24 + .../rpl/r/rpl_tokudb_rfr_partition_table.result | 36 + .../rpl/r/rpl_tokudb_row_crash_safe.result | 2183 +++++++++ .../rpl/r/rpl_tokudb_row_img_blobs.result | 4739 ++++++++++++++++++++ .../rpl/r/rpl_tokudb_row_img_eng_full.result | 3681 +++++++++++++++ .../rpl/r/rpl_tokudb_row_img_eng_min.result | 3522 +++++++++++++++ .../rpl/r/rpl_tokudb_row_img_eng_noblob.result | 3522 +++++++++++++++ .../rpl/r/rpl_tokudb_row_img_idx_full.result | 3505 +++++++++++++++ .../rpl/r/rpl_tokudb_row_img_idx_min.result | 3530 +++++++++++++++ .../rpl/r/rpl_tokudb_row_img_idx_noblob.result | 3530 +++++++++++++++ .../mysql-test/rpl/r/rpl_tokudb_row_log.result | 275 ++ .../r/rpl_tokudb_row_lower_case_table_names.result | 51 + .../mysql-test/rpl/r/rpl_tokudb_row_sp003.result | 60 + .../mysql-test/rpl/r/rpl_tokudb_row_sp006.result | 47 + .../mysql-test/rpl/r/rpl_tokudb_row_trig004.result | 32 + .../mysql-test/rpl/r/rpl_tokudb_stm_log.result | 274 ++ .../rpl/r/rpl_tokudb_stm_mixed_crash_safe.result | 1773 ++++++++ ..._tokudb_stm_mixed_lower_case_table_names.result | 48 + .../rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result | 37 + .../rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result | 37 + .../rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result | 37 + .../rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result | 37 + .../r/rpl_tokudb_update_unique_uc0_lookup0.result | 37 + .../r/rpl_tokudb_update_unique_uc0_lookup1.result | 37 + .../mysql-test/rpl/r/rpl_tokudb_write_pk.result | 21 + .../rpl/r/rpl_tokudb_write_pk_uc1.result | 21 + .../rpl/r/rpl_tokudb_write_unique.result | 21 + .../rpl/r/rpl_tokudb_write_unique_uc1.result | 21 + .../mysql-test/rpl/r/rpl_truncate_3tokudb.result | 48 + .../mysql-test/rpl/r/rpl_typeconv_tokudb.result | 13 + .../mysql-test/rpl/r/tokudb_innodb_xa_crash.result | 16 + storage/tokudb/mysql-test/rpl/t/disabled.def | 1 + .../mysql-test/rpl/t/rpl_deadlock_tokudb-slave.opt | 1 + .../mysql-test/rpl/t/rpl_deadlock_tokudb.test | 8 + .../rpl/t/rpl_extra_col_master_tokudb.test | 11 + .../rpl/t/rpl_extra_col_slave_tokudb.test | 7 + .../rpl/t/rpl_mixed_row_tokudb-master.opt | 1 + .../mysql-test/rpl/t/rpl_not_null_tokudb.test | 20 + .../rpl/t/rpl_parallel_tokudb-master.opt | 1 + .../mysql-test/rpl/t/rpl_parallel_tokudb-slave.opt | 5 + .../mysql-test/rpl/t/rpl_parallel_tokudb.test | 16 + .../rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt | 2 + .../rpl/t/rpl_parallel_tokudb_delete_pk.test | 63 + ...parallel_tokudb_update_pk_uc0_lookup0-slave.opt | 1 + .../rpl_parallel_tokudb_update_pk_uc0_lookup0.test | 70 + .../rpl/t/rpl_parallel_tokudb_write_pk-slave.opt | 2 + .../rpl/t/rpl_parallel_tokudb_write_pk.test | 53 + .../rpl/t/rpl_partition_tokudb-master.opt | 1 + .../mysql-test/rpl/t/rpl_partition_tokudb.test | 12 + .../mysql-test/rpl/t/rpl_relay_space_tokudb.test | 4 + .../t/rpl_rfr_disable_on_expl_pk_absence-slave.opt | 1 + .../rpl/t/rpl_rfr_disable_on_expl_pk_absence.test | 48 + .../mysql-test/rpl/t/rpl_row_basic_3tokudb.test | 11 + .../mysql-test/rpl/t/rpl_row_blob_tokudb.test | 15 + .../mysql-test/rpl/t/rpl_row_log_tokudb-master.opt | 2 + .../mysql-test/rpl/t/rpl_row_log_tokudb.test | 15 + .../mysql-test/rpl/t/rpl_row_rec_comp_tokudb.test | 11 + .../mysql-test/rpl/t/rpl_row_sp002_tokudb.test | 4 + .../mysql-test/rpl/t/rpl_row_sp007_tokudb.test | 4 + .../rpl/t/rpl_row_tabledefs_3tokudb.test | 10 + .../mysql-test/rpl/t/rpl_set_null_tokudb.test | 7 + .../tokudb/mysql-test/rpl/t/rpl_stm_tokudb.test | 11 + .../tokudb/mysql-test/rpl/t/rpl_tokudb-master.opt | 1 + .../rpl/t/rpl_tokudb_bug28430-master.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_bug28430-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_bug28430.test | 159 + .../mysql-test/rpl/t/rpl_tokudb_bug30888.test | 66 + .../rpl/t/rpl_tokudb_commit_after_flush.test | 6 + .../rpl/t/rpl_tokudb_delete_pk-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_delete_pk.test | 63 + .../rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt | 1 + .../rpl/t/rpl_tokudb_delete_pk_lookup1.test | 66 + .../rpl/t/rpl_tokudb_insert_id-master.opt | 1 + .../rpl/t/rpl_tokudb_insert_id-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_insert_id.test | 7 + .../mysql-test/rpl/t/rpl_tokudb_insert_id_pk.test | 7 + .../mysql-test/rpl/t/rpl_tokudb_mixed_ddl.test | 9 + .../mysql-test/rpl/t/rpl_tokudb_mixed_dml.test | 12 + .../mysql-test/rpl/t/rpl_tokudb_multi_update.test | 4 + .../rpl/t/rpl_tokudb_multi_update2-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_multi_update2.test | 14 + .../mysql-test/rpl/t/rpl_tokudb_multi_update3.test | 13 + .../rpl/t/rpl_tokudb_read_only_ff-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_read_only_ff.test | 53 + .../rpl/t/rpl_tokudb_read_only_ft-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_read_only_ft.test | 53 + .../rpl/t/rpl_tokudb_read_only_tf-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_read_only_tf.test | 53 + .../rpl/t/rpl_tokudb_read_only_tt-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_read_only_tt.test | 53 + .../rpl/t/rpl_tokudb_rfr_partition_table-slave.opt | 1 + .../rpl/t/rpl_tokudb_rfr_partition_table.test | 74 + .../rpl/t/rpl_tokudb_row_crash_safe-master.opt | 1 + .../rpl/t/rpl_tokudb_row_crash_safe-slave.opt | 1 + .../rpl/t/rpl_tokudb_row_crash_safe.test | 19 + .../mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf | 1 + .../mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test | 53 + .../rpl/t/rpl_tokudb_row_img_eng_full.cnf | 1 + .../rpl/t/rpl_tokudb_row_img_eng_full.test | 50 + .../rpl/t/rpl_tokudb_row_img_eng_min.cnf | 1 + .../rpl/t/rpl_tokudb_row_img_eng_min.test | 42 + .../rpl/t/rpl_tokudb_row_img_eng_noblob.cnf | 1 + .../rpl/t/rpl_tokudb_row_img_eng_noblob.test | 42 + .../rpl/t/rpl_tokudb_row_img_idx_full.cnf | 1 + .../rpl/t/rpl_tokudb_row_img_idx_full.test | 38 + .../rpl/t/rpl_tokudb_row_img_idx_min.cnf | 1 + .../rpl/t/rpl_tokudb_row_img_idx_min.test | 41 + .../rpl/t/rpl_tokudb_row_img_idx_noblob.cnf | 1 + .../rpl/t/rpl_tokudb_row_img_idx_noblob.test | 41 + .../mysql-test/rpl/t/rpl_tokudb_row_log-master.opt | 2 + .../mysql-test/rpl/t/rpl_tokudb_row_log.test | 15 + ...rpl_tokudb_row_lower_case_table_names-slave.opt | 1 + .../t/rpl_tokudb_row_lower_case_table_names.test | 14 + .../mysql-test/rpl/t/rpl_tokudb_row_sp003.test | 14 + .../mysql-test/rpl/t/rpl_tokudb_row_sp006.test | 14 + .../mysql-test/rpl/t/rpl_tokudb_row_trig004.test | 19 + .../mysql-test/rpl/t/rpl_tokudb_stm_log-master.opt | 2 + .../mysql-test/rpl/t/rpl_tokudb_stm_log.test | 15 + .../t/rpl_tokudb_stm_mixed_crash_safe-master.opt | 1 + .../t/rpl_tokudb_stm_mixed_crash_safe-slave.opt | 1 + .../rpl/t/rpl_tokudb_stm_mixed_crash_safe.test | 18 + ...kudb_stm_mixed_lower_case_table_names-slave.opt | 1 + ...pl_tokudb_stm_mixed_lower_case_table_names.test | 14 + .../t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt | 1 + .../rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test | 70 + .../t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt | 1 + .../rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test | 70 + .../t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt | 1 + .../rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test | 70 + .../t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt | 1 + .../rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test | 70 + .../rpl_tokudb_update_unique_uc0_lookup0-slave.opt | 1 + .../t/rpl_tokudb_update_unique_uc0_lookup0.test | 70 + .../rpl_tokudb_update_unique_uc0_lookup1-slave.opt | 1 + .../t/rpl_tokudb_update_unique_uc0_lookup1.test | 69 + .../mysql-test/rpl/t/rpl_tokudb_write_pk-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_write_pk.test | 53 + .../rpl/t/rpl_tokudb_write_pk_uc1-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_write_pk_uc1.test | 53 + .../rpl/t/rpl_tokudb_write_unique-slave.opt | 1 + .../mysql-test/rpl/t/rpl_tokudb_write_unique.test | 52 + .../rpl/t/rpl_tokudb_write_unique_uc1-slave.opt | 1 + .../rpl/t/rpl_tokudb_write_unique_uc1.test | 52 + .../mysql-test/rpl/t/rpl_truncate_3tokudb.test | 4 + .../mysql-test/rpl/t/rpl_typeconv_tokudb.test | 26 + storage/tokudb/mysql-test/rpl/t/suite.opt | 1 + .../rpl/t/tokudb_innodb_xa_crash-slave.opt | 1 + .../mysql-test/rpl/t/tokudb_innodb_xa_crash.test | 25 + storage/tokudb/mysql-test/tokudb_rpl/combinations | 8 - .../include/rpl_tokudb_row_img_general_loop.inc | 42 - .../tokudb_rpl/r/rpl_deadlock_tokudb.result | 143 - .../r/rpl_extra_col_master_tokudb.result | 859 ---- .../tokudb_rpl/r/rpl_extra_col_slave_tokudb.result | 552 --- .../tokudb_rpl/r/rpl_mixed_row_tokudb.result | 132 - .../tokudb_rpl/r/rpl_not_null_tokudb.result | 210 - .../tokudb_rpl/r/rpl_parallel_tokudb.result | 73 - .../r/rpl_parallel_tokudb_delete_pk.result | 29 - ...pl_parallel_tokudb_update_pk_uc0_lookup0.result | 39 - .../r/rpl_parallel_tokudb_write_pk.result | 23 - .../tokudb_rpl/r/rpl_partition_tokudb.result | 150 - .../tokudb_rpl/r/rpl_relay_space_tokudb.result | 27 - .../r/rpl_rfr_disable_on_expl_pk_absence.result | 47 - .../tokudb_rpl/r/rpl_row_basic_3tokudb.result | 679 --- .../tokudb_rpl/r/rpl_row_blob_tokudb.result | 161 - .../tokudb_rpl/r/rpl_row_log_tokudb.result | 275 -- .../tokudb_rpl/r/rpl_row_rec_comp_tokudb.result | 37 - .../tokudb_rpl/r/rpl_row_sp002_tokudb.result | 233 - .../tokudb_rpl/r/rpl_row_sp007_tokudb.result | 48 - .../tokudb_rpl/r/rpl_row_tabledefs_3tokudb.result | 190 - .../tokudb_rpl/r/rpl_set_null_tokudb.result | 31 - .../mysql-test/tokudb_rpl/r/rpl_stm_tokudb.result | 138 - .../tokudb_rpl/r/rpl_tokudb_bug28430.result | 145 - .../tokudb_rpl/r/rpl_tokudb_bug30888.result | 35 - .../r/rpl_tokudb_commit_after_flush.result | 15 - .../tokudb_rpl/r/rpl_tokudb_delete_pk.result | 27 - .../r/rpl_tokudb_delete_pk_lookup1.result | 27 - .../tokudb_rpl/r/rpl_tokudb_insert_id.result | 554 --- .../tokudb_rpl/r/rpl_tokudb_insert_id_pk.result | 82 - .../tokudb_rpl/r/rpl_tokudb_mixed_ddl.result | 159 - .../tokudb_rpl/r/rpl_tokudb_mixed_dml.result | 1109 ----- .../tokudb_rpl/r/rpl_tokudb_multi_update.result | 29 - .../tokudb_rpl/r/rpl_tokudb_multi_update2.result | 60 - .../tokudb_rpl/r/rpl_tokudb_multi_update3.result | 202 - .../tokudb_rpl/r/rpl_tokudb_read_only_ff.result | 24 - .../tokudb_rpl/r/rpl_tokudb_read_only_ft.result | 24 - .../tokudb_rpl/r/rpl_tokudb_read_only_tf.result | 24 - .../tokudb_rpl/r/rpl_tokudb_read_only_tt.result | 24 - .../r/rpl_tokudb_rfr_partition_table.result | 36 - .../tokudb_rpl/r/rpl_tokudb_row_crash_safe.result | 2183 --------- .../tokudb_rpl/r/rpl_tokudb_row_img_blobs.result | 4739 -------------------- .../r/rpl_tokudb_row_img_eng_full.result | 3681 --------------- .../tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result | 3522 --------------- .../r/rpl_tokudb_row_img_eng_noblob.result | 3522 --------------- .../r/rpl_tokudb_row_img_idx_full.result | 3505 --------------- .../tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result | 3530 --------------- .../r/rpl_tokudb_row_img_idx_noblob.result | 3530 --------------- .../tokudb_rpl/r/rpl_tokudb_row_log.result | 275 -- .../r/rpl_tokudb_row_lower_case_table_names.result | 51 - .../tokudb_rpl/r/rpl_tokudb_row_sp003.result | 60 - .../tokudb_rpl/r/rpl_tokudb_row_sp006.result | 47 - .../tokudb_rpl/r/rpl_tokudb_row_trig004.result | 32 - .../tokudb_rpl/r/rpl_tokudb_stm_log.result | 274 -- .../r/rpl_tokudb_stm_mixed_crash_safe.result | 1773 -------- ..._tokudb_stm_mixed_lower_case_table_names.result | 48 - .../r/rpl_tokudb_update_pk_uc0_lookup0.result | 37 - .../r/rpl_tokudb_update_pk_uc0_lookup1.result | 37 - .../r/rpl_tokudb_update_pk_uc1_lookup0.result | 37 - .../r/rpl_tokudb_update_pk_uc1_lookup1.result | 37 - .../r/rpl_tokudb_update_unique_uc0_lookup0.result | 37 - .../r/rpl_tokudb_update_unique_uc0_lookup1.result | 37 - .../tokudb_rpl/r/rpl_tokudb_write_pk.result | 21 - .../tokudb_rpl/r/rpl_tokudb_write_pk_uc1.result | 21 - .../tokudb_rpl/r/rpl_tokudb_write_unique.result | 21 - .../r/rpl_tokudb_write_unique_uc1.result | 21 - .../tokudb_rpl/r/rpl_truncate_3tokudb.result | 48 - .../tokudb_rpl/r/rpl_typeconv_tokudb.result | 13 - .../tokudb_rpl/r/tokudb_innodb_xa_crash.result | 16 - .../tokudb/mysql-test/tokudb_rpl/t/disabled.def | 1 - .../tokudb_rpl/t/rpl_deadlock_tokudb-slave.opt | 1 - .../tokudb_rpl/t/rpl_deadlock_tokudb.test | 8 - .../tokudb_rpl/t/rpl_extra_col_master_tokudb.test | 11 - .../tokudb_rpl/t/rpl_extra_col_slave_tokudb.test | 7 - .../tokudb_rpl/t/rpl_mixed_row_tokudb-master.opt | 1 - .../tokudb_rpl/t/rpl_not_null_tokudb.test | 20 - .../tokudb_rpl/t/rpl_parallel_tokudb-master.opt | 1 - .../tokudb_rpl/t/rpl_parallel_tokudb-slave.opt | 5 - .../tokudb_rpl/t/rpl_parallel_tokudb.test | 16 - .../t/rpl_parallel_tokudb_delete_pk-slave.opt | 2 - .../t/rpl_parallel_tokudb_delete_pk.test | 63 - ...parallel_tokudb_update_pk_uc0_lookup0-slave.opt | 1 - .../rpl_parallel_tokudb_update_pk_uc0_lookup0.test | 70 - .../t/rpl_parallel_tokudb_write_pk-slave.opt | 2 - .../tokudb_rpl/t/rpl_parallel_tokudb_write_pk.test | 53 - .../tokudb_rpl/t/rpl_partition_tokudb-master.opt | 1 - .../tokudb_rpl/t/rpl_partition_tokudb.test | 12 - .../tokudb_rpl/t/rpl_relay_space_tokudb.test | 4 - .../t/rpl_rfr_disable_on_expl_pk_absence-slave.opt | 1 - .../t/rpl_rfr_disable_on_expl_pk_absence.test | 48 - .../tokudb_rpl/t/rpl_row_basic_3tokudb.test | 11 - .../tokudb_rpl/t/rpl_row_blob_tokudb.test | 15 - .../tokudb_rpl/t/rpl_row_log_tokudb-master.opt | 2 - .../tokudb_rpl/t/rpl_row_log_tokudb.test | 15 - .../tokudb_rpl/t/rpl_row_rec_comp_tokudb.test | 11 - .../tokudb_rpl/t/rpl_row_sp002_tokudb.test | 4 - .../tokudb_rpl/t/rpl_row_sp007_tokudb.test | 4 - .../tokudb_rpl/t/rpl_row_tabledefs_3tokudb.test | 10 - .../tokudb_rpl/t/rpl_set_null_tokudb.test | 7 - .../mysql-test/tokudb_rpl/t/rpl_stm_tokudb.test | 11 - .../mysql-test/tokudb_rpl/t/rpl_tokudb-master.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_bug28430-master.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_bug28430-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_bug28430.test | 159 - .../tokudb_rpl/t/rpl_tokudb_bug30888.test | 66 - .../t/rpl_tokudb_commit_after_flush.test | 6 - .../tokudb_rpl/t/rpl_tokudb_delete_pk-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_delete_pk.test | 63 - .../t/rpl_tokudb_delete_pk_lookup1-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1.test | 66 - .../tokudb_rpl/t/rpl_tokudb_insert_id-master.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_insert_id.test | 7 - .../tokudb_rpl/t/rpl_tokudb_insert_id_pk.test | 7 - .../tokudb_rpl/t/rpl_tokudb_mixed_ddl.test | 9 - .../tokudb_rpl/t/rpl_tokudb_mixed_dml.test | 12 - .../tokudb_rpl/t/rpl_tokudb_multi_update.test | 4 - .../t/rpl_tokudb_multi_update2-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_multi_update2.test | 14 - .../tokudb_rpl/t/rpl_tokudb_multi_update3.test | 13 - .../tokudb_rpl/t/rpl_tokudb_read_only_ff-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_read_only_ff.test | 53 - .../tokudb_rpl/t/rpl_tokudb_read_only_ft-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_read_only_ft.test | 53 - .../tokudb_rpl/t/rpl_tokudb_read_only_tf-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_read_only_tf.test | 53 - .../tokudb_rpl/t/rpl_tokudb_read_only_tt-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_read_only_tt.test | 53 - .../t/rpl_tokudb_rfr_partition_table-slave.opt | 1 - .../t/rpl_tokudb_rfr_partition_table.test | 74 - .../t/rpl_tokudb_row_crash_safe-master.opt | 1 - .../t/rpl_tokudb_row_crash_safe-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_row_crash_safe.test | 19 - .../tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf | 1 - .../tokudb_rpl/t/rpl_tokudb_row_img_blobs.test | 53 - .../tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf | 1 - .../tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test | 50 - .../tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf | 1 - .../tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test | 42 - .../tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf | 1 - .../t/rpl_tokudb_row_img_eng_noblob.test | 42 - .../tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf | 1 - .../tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test | 38 - .../tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf | 1 - .../tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test | 41 - .../tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf | 1 - .../t/rpl_tokudb_row_img_idx_noblob.test | 41 - .../tokudb_rpl/t/rpl_tokudb_row_log-master.opt | 2 - .../tokudb_rpl/t/rpl_tokudb_row_log.test | 15 - ...rpl_tokudb_row_lower_case_table_names-slave.opt | 1 - .../t/rpl_tokudb_row_lower_case_table_names.test | 14 - .../tokudb_rpl/t/rpl_tokudb_row_sp003.test | 14 - .../tokudb_rpl/t/rpl_tokudb_row_sp006.test | 14 - .../tokudb_rpl/t/rpl_tokudb_row_trig004.test | 19 - .../tokudb_rpl/t/rpl_tokudb_stm_log-master.opt | 2 - .../tokudb_rpl/t/rpl_tokudb_stm_log.test | 15 - .../t/rpl_tokudb_stm_mixed_crash_safe-master.opt | 1 - .../t/rpl_tokudb_stm_mixed_crash_safe-slave.opt | 1 - .../t/rpl_tokudb_stm_mixed_crash_safe.test | 18 - ...kudb_stm_mixed_lower_case_table_names-slave.opt | 1 - ...pl_tokudb_stm_mixed_lower_case_table_names.test | 14 - .../t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt | 1 - .../t/rpl_tokudb_update_pk_uc0_lookup0.test | 70 - .../t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt | 1 - .../t/rpl_tokudb_update_pk_uc0_lookup1.test | 70 - .../t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt | 1 - .../t/rpl_tokudb_update_pk_uc1_lookup0.test | 70 - .../t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt | 1 - .../t/rpl_tokudb_update_pk_uc1_lookup1.test | 70 - .../rpl_tokudb_update_unique_uc0_lookup0-slave.opt | 1 - .../t/rpl_tokudb_update_unique_uc0_lookup0.test | 70 - .../rpl_tokudb_update_unique_uc0_lookup1-slave.opt | 1 - .../t/rpl_tokudb_update_unique_uc0_lookup1.test | 69 - .../tokudb_rpl/t/rpl_tokudb_write_pk-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_write_pk.test | 53 - .../tokudb_rpl/t/rpl_tokudb_write_pk_uc1-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_write_pk_uc1.test | 53 - .../tokudb_rpl/t/rpl_tokudb_write_unique-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_write_unique.test | 52 - .../t/rpl_tokudb_write_unique_uc1-slave.opt | 1 - .../tokudb_rpl/t/rpl_tokudb_write_unique_uc1.test | 52 - .../tokudb_rpl/t/rpl_truncate_3tokudb.test | 4 - .../tokudb_rpl/t/rpl_typeconv_tokudb.test | 26 - storage/tokudb/mysql-test/tokudb_rpl/t/suite.opt | 1 - .../tokudb_rpl/t/tokudb_innodb_xa_crash-slave.opt | 1 - .../tokudb_rpl/t/tokudb_innodb_xa_crash.test | 25 - 372 files changed, 40162 insertions(+), 40162 deletions(-) create mode 100644 storage/tokudb/mysql-test/rpl/combinations create mode 100644 storage/tokudb/mysql-test/rpl/include/rpl_tokudb_row_img_general_loop.inc create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_deadlock_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_extra_col_master_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_extra_col_slave_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_mixed_row_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_not_null_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_delete_pk.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_write_pk.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_partition_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_relay_space_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_rfr_disable_on_expl_pk_absence.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_basic_3tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_blob_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_log_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_rec_comp_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_sp002_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_sp007_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_row_tabledefs_3tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_set_null_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_stm_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug28430.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug30888.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_commit_after_flush.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk_lookup1.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id_pk.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_ddl.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_dml.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update2.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update3.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ff.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ft.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tf.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tt.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_rfr_partition_table.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_crash_safe.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_blobs.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_full.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_min.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_noblob.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_full.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_min.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_noblob.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_log.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_lower_case_table_names.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp003.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp006.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_trig004.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_log.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_crash_safe.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk_uc1.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique_uc1.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_truncate_3tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/rpl_typeconv_tokudb.result create mode 100644 storage/tokudb/mysql-test/rpl/r/tokudb_innodb_xa_crash.result create mode 100644 storage/tokudb/mysql-test/rpl/t/disabled.def create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_extra_col_master_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_extra_col_slave_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_mixed_row_tokudb-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_not_null_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_relay_space_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_basic_3tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_blob_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_rec_comp_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_sp002_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_sp007_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_row_tabledefs_3tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_set_null_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_stm_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug30888.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_commit_after_flush.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id_pk.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_ddl.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_dml.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update3.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp003.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp006.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_trig004.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_truncate_3tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_typeconv_tokudb.test create mode 100644 storage/tokudb/mysql-test/rpl/t/suite.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash-slave.opt create mode 100644 storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/combinations delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_deadlock_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_master_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_slave_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_mixed_row_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_delete_pk.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_write_pk.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_partition_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_relay_space_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_rfr_disable_on_expl_pk_absence.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_blob_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_log_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_rec_comp_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp002_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp007_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_tabledefs_3tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_set_null_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_stm_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug28430.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug30888.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk_lookup1.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_ddl.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_dml.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ff.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ft.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tf.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tt.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_rfr_partition_table.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_trig004.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_log.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk_uc1.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique_uc1.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_truncate_3tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/rpl_typeconv_tokudb.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/r/tokudb_innodb_xa_crash.result delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/disabled.def delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_master_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_slave_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_mixed_row_tokudb-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_relay_space_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_blob_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_rec_comp_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp002_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp007_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_tabledefs_3tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_set_null_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_stm_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug30888.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_ddl.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_dml.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_truncate_3tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/rpl_typeconv_tokudb.test delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/suite.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash-slave.opt delete mode 100644 storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash.test (limited to 'storage') diff --git a/storage/tokudb/mysql-test/rpl/combinations b/storage/tokudb/mysql-test/rpl/combinations new file mode 100644 index 00000000000..07042c2cbec --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/combinations @@ -0,0 +1,8 @@ +[row] +binlog-format=row + +[stmt] +binlog-format=statement + +[mix] +binlog-format=mixed diff --git a/storage/tokudb/mysql-test/rpl/include/rpl_tokudb_row_img_general_loop.inc b/storage/tokudb/mysql-test/rpl/include/rpl_tokudb_row_img_general_loop.inc new file mode 100644 index 00000000000..321f09353a1 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/include/rpl_tokudb_row_img_general_loop.inc @@ -0,0 +1,42 @@ +# +# This is a helper script for rpl_row_img.test. It creates +# all combinations MyISAM / InnoDB in a three server replication +# chain. Each engine combination is tested against the current +# seetings for binlog_row_image (on each server). +# +# The test script that is executed on every combination is the +# only argument to this wrapper script. See below. +# +# This script takes one parameter: +# - $row_img_test_script +# the name of the test script to include in every combination +# +# Sample usage: +# -- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +# -- source include/rpl_row_img_general_loop.test + + +-- let $engine_type_a= 2 +-- let $server_1_engine= TokuDB +while($engine_type_a) +{ + -- let $engine_type_b= 2 + -- let $server_2_engine= TokuDB + while($engine_type_b) + { + -- let $engine_type_c= 2 + -- let $server_3_engine= TokuDB + while($engine_type_c) + { + -- echo ### engines: $server_1_engine, $server_2_engine, $server_3_engine + -- source $row_img_test_script + + -- let $server_3_engine= InnoDB + -- dec $engine_type_c + } + -- let $server_2_engine= InnoDB + -- dec $engine_type_b + } + -- let $server_1_engine= InnoDB + -- dec $engine_type_a +} diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_deadlock_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_deadlock_tokudb.result new file mode 100644 index 00000000000..a64b5dcbeed --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_deadlock_tokudb.result @@ -0,0 +1,143 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +*** Prepare tables and data *** +CREATE TABLE t1 (a INT NOT NULL, KEY(a)) ENGINE=TokuDB; +CREATE TABLE t2 (a INT) ENGINE=TokuDB; +CREATE TABLE t3 (a INT NOT NULL, KEY(a)) ENGINE=TokuDB; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + KEY `a` (`a`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) DEFAULT NULL +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `a` int(11) NOT NULL, + KEY `a` (`a`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SELECT @@GLOBAL.slave_transaction_retries; +@@GLOBAL.slave_transaction_retries +2 +SELECT @@GLOBAL.innodb_lock_wait_timeout; +@@GLOBAL.innodb_lock_wait_timeout +4 +include/stop_slave.inc +BEGIN; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (2), (2), (2), (2), (2), (2), (2), (2), (2), (2); +INSERT INTO t3 VALUES (3); +COMMIT; + +*** Test deadlock *** +BEGIN; +SELECT * FROM t1 FOR UPDATE; +a +include/start_slave.inc +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +COMMIT; +include/check_slave_is_running.inc +SELECT * FROM t1; +a +1 +SELECT * FROM t3; +a +3 + +*** Test lock wait timeout *** +include/stop_slave.inc +DELETE FROM t2; +RESET MASTER; +CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN; +BEGIN; +SELECT * FROM t1 FOR UPDATE; +a +1 +START SLAVE; +include/wait_for_slave_sql_error.inc [errno=1205] +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +COMMIT; +include/start_slave.inc +SELECT * FROM t1; +a +1 +1 +SELECT * FROM t3; +a +3 +3 +include/check_slave_is_running.inc + +*** Test lock wait timeout and purged relay logs *** +SET @my_max_relay_log_size= @@global.max_relay_log_size; +SET global max_relay_log_size=0; +include/stop_slave.inc +DELETE FROM t2; +RESET MASTER; +CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN; +BEGIN; +SELECT * FROM t1 FOR UPDATE; +a +1 +1 +START SLAVE; +include/wait_for_slave_sql_error.inc [errno=1205] +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +COMMIT; +include/start_slave.inc +SELECT * FROM t1; +a +1 +1 +1 +SELECT * FROM t3; +a +3 +3 +3 +include/check_slave_is_running.inc + +*** Test the deadlock warning to be escalated into the error *** +delete from t1; +delete from t2; +delete from t3; +delete from t1; +delete from t2; +delete from t3; +set @save.slave_transaction_retries= @@global.slave_transaction_retries; +set @@global.slave_transaction_retries= 0; +include/stop_slave.inc +BEGIN; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (2), (2), (2), (2), (2), (2), (2), (2), (2), (2); +INSERT INTO t3 VALUES (3); +COMMIT; +BEGIN; +SELECT count(*) as zero FROM t1 FOR UPDATE; +zero +0 +START SLAVE; +*** Now the slave must be stopped due to timeout *** +include/wait_for_slave_sql_error.inc [errno=1205] +rollback; +set @@global.slave_transaction_retries= @save.slave_transaction_retries; +include/start_slave.inc +*** Clean up *** +DROP TABLE t1,t2,t3; +SET global max_relay_log_size= @my_max_relay_log_size; +End of 5.1 tests +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_extra_col_master_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_extra_col_master_tokudb.result new file mode 100644 index 00000000000..63cc27481c5 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_extra_col_master_tokudb.result @@ -0,0 +1,859 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] + +*********************************************************** +*********************************************************** +***************** Start of Testing ************************ +*********************************************************** +*********************************************************** +* This test format == binlog_format ROW and engine == TokuDB +*********************************************************** +*********************************************************** + +***** Testing more columns on the Master ***** + +CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), +/* extra */ +f5 FLOAT DEFAULT '2.00', +f6 CHAR(4) DEFAULT 'TEST', +f7 INT DEFAULT '0', +f8 TEXT, +f9 LONGBLOB, +f10 BIT(63), +f11 VARBINARY(64))ENGINE=TokuDB; + +* Alter Table on Slave and drop columns f5 through f11 * + +alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11; + +* Insert data in Master then update and delete some rows* + +* Select count and 20 rows from Master * + +SELECT COUNT(*) FROM t1; +COUNT(*) +40 + +SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9, +hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20; +f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11) +2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 +30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 + +* Select count and 20 rows from Slave * + +SELECT COUNT(*) FROM t1; +COUNT(*) +40 + +SELECT * FROM t1 ORDER BY f3 LIMIT 20; +f1 f2 f3 f4 +2 2 2 second +3 3 3 next +5 5 5 second +6 6 6 next +8 8 8 second +9 9 9 next +11 11 11 second +12 12 12 next +14 14 14 second +15 15 15 next +17 17 17 second +18 18 18 next +20 20 20 second +21 21 21 next +23 23 23 second +24 24 24 next +26 26 26 second +27 27 27 next +29 29 29 second +30 30 30 next +include/check_slave_is_running.inc + +***** Testing Altering table def scenario ***** + +CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), +/* extra */ +f5 DOUBLE DEFAULT '2.00', +f6 ENUM('a', 'b', 'c') default 'a', +f7 DECIMAL(17,9) default '1000.00', +f8 MEDIUMBLOB, +f9 NUMERIC(6,2) default '2000.00', +f10 VARCHAR(1024), +f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', +f12 SET('a', 'b', 'c') default 'b') +ENGINE=TokuDB; + +CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), +/* extra */ +f5 DOUBLE DEFAULT '2.00', +f6 ENUM('a', 'b', 'c') default 'a', +f8 MEDIUMBLOB, +f10 VARCHAR(1024), +f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', +f12 SET('a', 'b', 'c') default 'b') +ENGINE=TokuDB; + +CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), +/* extra */ +f5 DOUBLE DEFAULT '2.00', +f6 DECIMAL(17,9) default '1000.00', +f7 MEDIUMBLOB, +f8 NUMERIC(6,2) default '2000.00', +f9 VARCHAR(1024), +f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', +f11 CHAR(255)) +ENGINE=TokuDB; + +CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), +/* extra */ +f5 BIGINT, +f6 BLOB, +f7 DATE, +f8 DATETIME, +f9 FLOAT, +f10 INT, +f11 LONGBLOB, +f12 LONGTEXT, +f13 MEDIUMBLOB, +f14 MEDIUMINT, +f15 MEDIUMTEXT, +f16 REAL, +f17 SMALLINT, +f18 TEXT, +f19 TIME, +f20 TIMESTAMP, +f21 TINYBLOB, +f22 TINYINT, +f23 TINYTEXT, +f24 YEAR, +f25 BINARY(255), +f26 BIT(64), +f27 CHAR(255), +f28 DECIMAL(30,7), +f29 DOUBLE, +f30 ENUM ('a','b', 'c') default 'a', +f31 FLOAT, +f32 NUMERIC(17,9), +f33 SET ('a', 'b', 'c') default 'b', +f34 VARBINARY(1025), +f35 VARCHAR(257) +) ENGINE=TokuDB; + +** Alter tables on slave and drop columns ** + +alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop +f12; +alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12; +alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11; +alter table t31 +drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, +drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18, +drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25, +drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32, +drop f33, drop f34, drop f35; + +** Insert Data into Master ** +INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10: +some var char'; +INSERT into t2 values (2, 2, 2, 'second', +2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char', +'01234567', 'c'), +(3, 3, 3, 'third', +3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char', +'01234567', 'c'); +INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char'; +INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10: +binary data'; +INSERT into t31 set f1=1, f2=1, f3=1, f4='first'; +INSERT into t31 set f1=1, f2=1, f3=2, f4='second', +f9=2.2, f10='seven samurai', f28=222.222, f35='222'; +Warnings: +Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1 +INSERT into t31 values (1, 1, 3, 'third', +/* f5 BIGINT, */ 333333333333333333333333, +/* f6 BLOB, */ '3333333333333333333333', +/* f7 DATE, */ '2007-07-18', +/* f8 DATETIME, */ "2007-07-18", +/* f9 FLOAT, */ 3.33333333, +/* f10 INT, */ 333333333, +/* f11 LONGBLOB, */ '3333333333333333333', +/* f12 LONGTEXT, */ '3333333333333333333', +/* f13 MEDIUMBLOB, */ '3333333333333333333', +/* f14 MEDIUMINT, */ 33, +/* f15 MEDIUMTEXT, */ 3.3, +/* f16 REAL, */ 3.3, +/* f17 SMALLINT, */ 3, +/* f18 TEXT, */ '33', +/* f19 TIME, */ '2:59:58.999', +/* f20 TIMESTAMP, */ 20000303000000, +/* f21 TINYBLOB, */ '3333', +/* f22 TINYINT, */ 3, +/* f23 TINYTEXT, */ '3', +/* f24 YEAR, */ 3000, +/* f25 BINARY(255), */ 'three_33333', +/* f26 BIT(64), */ b'011', +/* f27 CHAR(255), */ 'three', +/* f28 DECIMAL(30,7), */ 3.333, +/* f29 DOUBLE, */ 3.333333333333333333333333333, +/* f30 ENUM ('a','b','c')*/ 'c', +/* f31 FLOAT, */ 3.0, +/* f32 NUMERIC(17,9), */ 3.3333, +/* f33 SET ('a','b','c'),*/ 'c', +/*f34 VARBINARY(1025),*/ '3333 minus 3', +/*f35 VARCHAR(257),*/ 'three times three' + ); +Warnings: +Warning 1264 Out of range value for column 'f5' at row 1 +Warning 1264 Out of range value for column 'f24' at row 1 +INSERT into t31 values (1, 1, 4, 'fourth', +/* f5 BIGINT, */ 333333333333333333333333, +/* f6 BLOB, */ '3333333333333333333333', +/* f7 DATE, */ '2007-07-18', +/* f8 DATETIME, */ "2007-07-18", +/* f9 FLOAT, */ 3.33333333, +/* f10 INT, */ 333333333, +/* f11 LONGBLOB, */ '3333333333333333333', +/* f12 LONGTEXT, */ '3333333333333333333', +/* f13 MEDIUMBLOB, */ '3333333333333333333', +/* f14 MEDIUMINT, */ 33, +/* f15 MEDIUMTEXT, */ 3.3, +/* f16 REAL, */ 3.3, +/* f17 SMALLINT, */ 3, +/* f18 TEXT, */ '33', +/* f19 TIME, */ '2:59:58.999', +/* f20 TIMESTAMP, */ 20000303000000, +/* f21 TINYBLOB, */ '3333', +/* f22 TINYINT, */ 3, +/* f23 TINYTEXT, */ '3', +/* f24 YEAR, */ 3000, +/* f25 BINARY(255), */ 'three_33333', +/* f26 BIT(64), */ b'011', +/* f27 CHAR(255), */ 'three', +/* f28 DECIMAL(30,7), */ 3.333, +/* f29 DOUBLE, */ 3.333333333333333333333333333, +/* f30 ENUM ('a','b','c')*/ 'c', +/* f31 FLOAT, */ 3.0, +/* f32 NUMERIC(17,9), */ 3.3333, +/* f33 SET ('a','b','c'),*/ 'c', +/*f34 VARBINARY(1025),*/ '3333 minus 3', +/*f35 VARCHAR(257),*/ 'three times three' + ), +(1, 1, 5, 'fifth', +/* f5 BIGINT, */ 333333333333333333333333, +/* f6 BLOB, */ '3333333333333333333333', +/* f7 DATE, */ '2007-07-18', +/* f8 DATETIME, */ "2007-07-18", +/* f9 FLOAT, */ 3.33333333, +/* f10 INT, */ 333333333, +/* f11 LONGBLOB, */ '3333333333333333333', +/* f12 LONGTEXT, */ '3333333333333333333', +/* f13 MEDIUMBLOB, */ '3333333333333333333', +/* f14 MEDIUMINT, */ 33, +/* f15 MEDIUMTEXT, */ 3.3, +/* f16 REAL, */ 3.3, +/* f17 SMALLINT, */ 3, +/* f18 TEXT, */ '33', +/* f19 TIME, */ '2:59:58.999', +/* f20 TIMESTAMP, */ 20000303000000, +/* f21 TINYBLOB, */ '3333', +/* f22 TINYINT, */ 3, +/* f23 TINYTEXT, */ '3', +/* f24 YEAR, */ 3000, +/* f25 BINARY(255), */ 'three_33333', +/* f26 BIT(64), */ b'011', +/* f27 CHAR(255), */ 'three', +/* f28 DECIMAL(30,7), */ 3.333, +/* f29 DOUBLE, */ 3.333333333333333333333333333, +/* f30 ENUM ('a','b','c')*/ 'c', +/* f31 FLOAT, */ 3.0, +/* f32 NUMERIC(17,9), */ 3.3333, +/* f33 SET ('a','b','c'),*/ 'c', +/*f34 VARBINARY(1025),*/ '3333 minus 3', +/*f35 VARCHAR(257),*/ 'three times three' + ), +(1, 1, 6, 'sixth', +/* f5 BIGINT, */ NULL, +/* f6 BLOB, */ '3333333333333333333333', +/* f7 DATE, */ '2007-07-18', +/* f8 DATETIME, */ "2007-07-18", +/* f9 FLOAT, */ 3.33333333, +/* f10 INT, */ 333333333, +/* f11 LONGBLOB, */ '3333333333333333333', +/* f12 LONGTEXT, */ '3333333333333333333', +/* f13 MEDIUMBLOB, */ '3333333333333333333', +/* f14 MEDIUMINT, */ 33, +/* f15 MEDIUMTEXT, */ 3.3, +/* f16 REAL, */ 3.3, +/* f17 SMALLINT, */ 3, +/* f18 TEXT, */ '33', +/* f19 TIME, */ '2:59:58.999', +/* f20 TIMESTAMP, */ 20000303000000, +/* f21 TINYBLOB, */ '3333', +/* f22 TINYINT, */ 3, +/* f23 TINYTEXT, */ '3', +/* f24 YEAR, */ 3000, +/* f25 BINARY(255), */ 'three_33333', +/* f26 BIT(64), */ b'011', +/* f27 CHAR(255), */ 'three', +/* f28 DECIMAL(30,7), */ 3.333, +/* f29 DOUBLE, */ 3.333333333333333333333333333, +/* f30 ENUM ('a','b','c')*/ 'c', +/* f31 FLOAT, */ 3.0, +/* f32 NUMERIC(17,9), */ 3.3333, +/* f33 SET ('a','b','c'),*/ 'c', +/*f34 VARBINARY(1025),*/ '3333 minus 3', +/*f35 VARCHAR(257),*/ NULL +); +Warnings: +Warning 1264 Out of range value for column 'f5' at row 1 +Warning 1264 Out of range value for column 'f24' at row 1 +Warning 1264 Out of range value for column 'f5' at row 2 +Warning 1264 Out of range value for column 'f24' at row 2 +Warning 1264 Out of range value for column 'f24' at row 3 + +** Sync slave with master ** +** Do selects from tables ** + +select * from t1 order by f3; +f1 f2 f3 f4 +2 2 2 second +3 3 3 next +5 5 5 second +6 6 6 next +8 8 8 second +9 9 9 next +11 11 11 second +12 12 12 next +14 14 14 second +15 15 15 next +17 17 17 second +18 18 18 next +20 20 20 second +21 21 21 next +23 23 23 second +24 24 24 next +26 26 26 second +27 27 27 next +29 29 29 second +30 30 30 next +31 31 31 second +32 32 32 second +33 33 33 second +34 34 34 second +35 35 35 second +36 36 36 second +37 37 37 second +38 38 38 second +39 39 39 second +40 40 40 second +41 41 41 second +42 42 42 second +43 43 43 second +44 44 44 second +45 45 45 second +46 46 46 second +47 47 47 second +48 48 48 second +49 49 49 second +50 50 50 second +select * from t2 order by f1; +f1 f2 f3 f4 +1 1 1 first +2 2 2 second +3 3 3 third +select * from t3 order by f1; +f1 f2 f3 f4 +1 1 1 first +select * from t4 order by f1; +f1 f2 f3 f4 +1 1 1 first +select * from t31 order by f3; +f1 f2 f3 f4 +1 1 1 first +1 1 2 second +1 1 3 third +1 1 4 fourth +1 1 5 fifth +1 1 6 sixth + +** Do updates master ** + +update t31 set f5=555555555555555 where f3=6; +update t31 set f2=2 where f3=2; +update t31 set f1=NULL where f3=1; +update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3; +Warnings: +Warning 1048 Column 'f3' cannot be null + +** Delete from Master ** + +delete from t1; +delete from t2; +delete from t3; +delete from t4; +delete from t31; +select * from t31; +f1 f2 f3 f4 + +** Check slave status ** + +include/check_slave_is_running.inc + +**************************************** +* columns in master at middle of table * +* Expect: Proper error message * +**************************************** + +** Stop and Reset Slave ** + +STOP SLAVE; + +** create table slave side ** +CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5) +) ENGINE=TokuDB; + +** Connect to master and create table ** + +CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233', +c CHAR(5), e INT DEFAULT '1')ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), +(2,@b1,DEFAULT,'JOE',DEFAULT), +(3,@b1,DEFAULT,'QA',DEFAULT); + +******************************************** +*** Expect slave to fail with Error 1677 *** +******************************************** + +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] + +*** Drop t10 *** +DROP TABLE t10; + +********************************************* +* More columns in master at middle of table * +* Expect: Proper error message * +********************************************* + +*** Create t11 on slave *** +STOP SLAVE; +CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254) +) ENGINE=TokuDB; + +*** Create t11 on Master *** +CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT, +c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), +(2,@b1,'Testing is cool','JOE',DEFAULT), +(3,@b1,DEFAULT,'QA',DEFAULT); + +******************************************** +*** Expect slave to fail with Error 1677 *** +******************************************** + +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] + +*** Drop t11 *** +DROP TABLE t11; + +********************************************* +* More columns in master at middle of table * +* Expect: This one should pass blob-text * +********************************************* + +*** Create t12 on slave *** +STOP SLAVE; +CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB +) ENGINE=TokuDB; + +*** Create t12 on Master *** +CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT, +c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), +(2,@b1,'JOE',DEFAULT,DEFAULT), +(3,@b1,'QA',DEFAULT,DEFAULT); + +SELECT a,hex(b),f,c,e FROM t12 ORDER BY a; +a hex(b) f c e +1 62316231623162316231623162316231 Kyle test 1 +2 62316231623162316231623162316231 JOE test 1 +3 62316231623162316231623162316231 QA test 1 + +*** Select on Slave *** +SELECT a,hex(b),c FROM t12 ORDER BY a; +a hex(b) c +1 62316231623162316231623162316231 Kyle +2 62316231623162316231623162316231 JOE +3 62316231623162316231623162316231 QA + +*** Drop t12 *** +DROP TABLE t12; + +**************************************************** +* - Alter Master adding columns at middle of table * +* Expect: columns added * +**************************************************** + + +*** Create t14 on slave *** +STOP SLAVE; +CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE=TokuDB; + +*** Create t14 on Master *** +CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1; +ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2; + +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT), +(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT), +(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT); + +SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1; +c1 c2 c3 hex(c4) c5 c6 c7 +1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP +2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP +3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP + +*** Select on Slave **** +SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1; +c1 c2 c3 hex(c4) c5 +1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle +2 2.00 This Test Should work 62316231623162316231623162316231 JOE +3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA + +**************************************************** +* - Alter Master Dropping columns from the middle. * +* Expect: columns dropped * +**************************************************** + +*** connect to master and drop columns *** +ALTER TABLE t14 DROP COLUMN c2; +ALTER TABLE t14 DROP COLUMN c7; + +*** Select from Master *** +SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1; +c1 c3 hex(c4) c5 c6 +1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 +2 This Test Should work 62316231623162316231623162316231 JOE 1 +3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 + +************ +* Bug30415 * +************ +include/wait_for_slave_sql_error.inc [errno=1091] +STOP SLAVE; + +*** Drop t14 *** +DROP TABLE t14; +DROP TABLE t14; +include/rpl_reset.inc + +************************************************* +* - Alter Master adding columns at end of table * +* Expect: Error 1054 * +************************************************* + +*** Create t15 on slave *** +STOP SLAVE; +CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE=TokuDB; + +*** Create t15 on Master *** +CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7; +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00), +(2,@b1,'JOE',DEFAULT,DEFAULT,3.00), +(3,@b1,'QA',DEFAULT,DEFAULT,3.00); +SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1; +c1 hex(c4) c5 c6 c7 c2 +1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00 +2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00 +3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00 + +******************************************** +*** Expect slave to fail with Error 1054 *** +******************************************** + +include/wait_for_slave_sql_error.inc [errno=1054] +STOP SLAVE; + +*** Drop t15 *** +DROP TABLE t15; +DROP TABLE t15; +include/rpl_reset.inc + +************************************************ +* - Create index on Master column not on slave * +* Expect:Warning * +************************************************ + +*** Create t16 on slave *** +STOP SLAVE; +CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE=TokuDB; + +*** Create t16 on Master *** +CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Create Index and Data Insert *** +CREATE INDEX part_of_c6 ON t16 (c6); +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), +(2,@b1,'JOE',2,DEFAULT), +(3,@b1,'QA',3,DEFAULT); +SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1; +c1 hex(c4) c5 c6 c7 +1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP +2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP +3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP + +***************** +*** BUG 30434 *** +***************** + +include/wait_for_slave_sql_error.inc [errno=1072] +STOP SLAVE; + +*** Drop t16 *** +DROP TABLE t16; +DROP TABLE t16; +include/rpl_reset.inc + +***************************************************** +* - Delete rows using column on Master not on slave * +* Expect: Rows Deleted * +***************************************************** + +*** Create t17 on slave *** +STOP SLAVE; +CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE=TokuDB; + +*** Create t17 on Master *** +CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), +(2,@b1,'JOE',2,DEFAULT), +(3,@b1,'QA',3,DEFAULT); +SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1; +c1 hex(c4) c5 c6 c7 +1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP +2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP +3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP + +** Select * from Slave ** +SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1; +c1 hex(c4) c5 +1 62316231623162316231623162316231 Kyle +2 62316231623162316231623162316231 JOE +3 62316231623162316231623162316231 QA + +** Delete from master ** +DELETE FROM t17 WHERE c6 = 3; +SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1; +c1 hex(c4) c5 c6 c7 +1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP +2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP + +** Check slave ** +SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1; +c1 hex(c4) c5 +1 62316231623162316231623162316231 Kyle +2 62316231623162316231623162316231 JOE +DROP TABLE t17; + + +***************************************************** +* - Update row using column on Master not on slave * +* Expect: Rows updated * +***************************************************** + +** Bug30674 ** + +*** Create t18 on slave *** + +STOP SLAVE; +CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE=TokuDB; + +*** Create t18 on Master *** +CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), +(2,@b1,'JOE',2,DEFAULT), +(3,@b1,'QA',3,DEFAULT); +SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1; +c1 hex(c4) c5 c6 c7 +1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP +2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP +3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP + +** Select * from Slave ** +SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1; +c1 hex(c4) c5 +1 62316231623162316231623162316231 Kyle +2 62316231623162316231623162316231 JOE +3 62316231623162316231623162316231 QA + +** update from master ** +UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3; +SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1; +c1 hex(c4) c5 c6 c7 +1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP +2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP +3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP + +** Check slave ** +SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1; +c1 hex(c4) c5 +1 62316231623162316231623162316231 Kyle +2 62316231623162316231623162316231 JOE +3 62316231623162316231623162316231 TEST +DROP TABLE t18; + + +***************************************************** +* - Insert UUID column on Master not on slave * +* Expect: Rows inserted * +***************************************************** + +*** Create t5 on slave *** +STOP SLAVE; +CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE=TokuDB; + +*** Create t5 on Master *** +CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 LONG, +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE=TokuDB; + +*** Start Slave *** +include/rpl_reset.inc + +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT), +(2,@b1,'JOE',UUID(),DEFAULT), +(3,@b1,'QA',UUID(),DEFAULT); +SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1; +c1 hex(c4) c5 c6 c7 +1 6231623162316231 Kyle UUID TIME +2 6231623162316231 JOE UUID TIME +3 6231623162316231 QA UUID TIME + +** Select * from Slave ** +SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1; +c1 hex(c4) c5 +1 6231623162316231 Kyle +2 6231623162316231 JOE +3 6231623162316231 QA +DROP TABLE t5; + +include/rpl_reset.inc +SET NAMES utf8; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(255) CHARACTER SET UTF8 NOT NULL) ENGINE=TokuDB; +SET SQL_LOG_BIN=1; +CREATE TABLE t1 (c1 INT) ENGINE=TokuDB; +INSERT INTO t1 VALUES (); +SET @text= REPEAT(_utf8'ç', 255); +INSERT INTO t1 VALUES (1, @text); +SELECT * FROM t1 ORDER BY c1; +c1 c2 +0 +1 ççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççç +SELECT * FROM t1 ORDER BY c1; +c1 +0 +1 +DROP TABLE t1; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_extra_col_slave_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_extra_col_slave_tokudb.result new file mode 100644 index 00000000000..2f4f7076ceb --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_extra_col_slave_tokudb.result @@ -0,0 +1,552 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression("Slave: Unknown table 'test.t6' Error_code: 1051"); +call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot be converted from type.* Error_code: 1677"); +call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); +**** Diff Table Def Start **** +*** On Slave *** +STOP SLAVE; +SET @saved_slave_type_conversions = @@slave_type_conversions; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY'; +CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20), +d FLOAT DEFAULT '2.00', +e CHAR(4) DEFAULT 'TEST') +ENGINE='TokuDB'; +*** Create t1 on Master *** +CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c CHAR(10) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +INSERT INTO t1 () VALUES(1,2,'TEXAS'),(2,1,'AUSTIN'),(3,4,'QA'); +SELECT * FROM t1 ORDER BY a; +a b c +1 2 TEXAS +2 1 AUSTIN +3 4 QA +*** Select from slave *** +SELECT * FROM t1 ORDER BY a; +a b c d e +1 2 TEXAS 2 TEST +2 1 AUSTIN 2 TEST +3 4 QA 2 TEST +SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; +*** Drop t1 *** +DROP TABLE t1; +*** Create t2 on slave *** +STOP SLAVE; +CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5), +d FLOAT DEFAULT '2.00', +e CHAR(5) DEFAULT 'TEST2') +ENGINE='TokuDB'; +*** Create t2 on Master *** +CREATE TABLE t2 (a INT PRIMARY KEY, b INT, c CHAR(10) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +INSERT INTO t2 () VALUES(1,2,'Kyle, TEX'),(2,1,'JOE AUSTIN'),(3,4,'QA TESTING'); +SELECT * FROM t2 ORDER BY a; +a b c +1 2 Kyle, TEX +2 1 JOE AUSTIN +3 4 QA TESTING +include/wait_for_slave_sql_error.inc [errno=1677] +STOP SLAVE; +include/rpl_reset.inc +SELECT * FROM t2 ORDER BY a; +a b c d e +*** Drop t2 *** +DROP TABLE t2; +*** Create t3 on slave *** +STOP SLAVE; +CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20), +d FLOAT DEFAULT '2.00', +e CHAR(5) DEFAULT 'TEST2') +ENGINE='TokuDB'; +*** Create t3 on Master *** +CREATE TABLE t3 (a BLOB, b INT PRIMARY KEY, c CHAR(20) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING'); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +*** Drop t3 *** +DROP TABLE t3; +*** Create t4 on slave *** +STOP SLAVE; +CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20), +d FLOAT DEFAULT '2.00', +e CHAR(5) DEFAULT 'TEST2') +ENGINE='TokuDB'; +*** Create t4 on Master *** +CREATE TABLE t4 (a DECIMAL(8,2), b INT PRIMARY KEY, c CHAR(20) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), +(30000.22,4,'QA TESTING'); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +*** Drop t4 *** +DROP TABLE t4; +*** Create t5 on slave *** +STOP SLAVE; +CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5), +c FLOAT, d INT, e DOUBLE, +f DECIMAL(8,2))ENGINE='TokuDB'; +*** Create t5 on Master *** +CREATE TABLE t5 (a INT PRIMARY KEY, b VARCHAR(6), +c DECIMAL(8,2), d BIT, e BLOB, +f FLOAT) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), +(2,'JOE',300.01,0,'b2b2',1.0000009); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +*** Drop t5 *** +DROP TABLE t5; +*** Create t6 on slave *** +STOP SLAVE; +CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5), +c FLOAT, d INT)ENGINE='TokuDB'; +*** Create t6 on Master *** +CREATE TABLE t6 (a INT PRIMARY KEY, b VARCHAR(6), +c DECIMAL(8,2), d BIT +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), +(2,'JOE',300.01,0); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +*** Drop t6 *** +include/rpl_reset.inc +DROP TABLE t6; +**** Diff Table Def End **** +**** Extra Colums Start **** +*** Create t7 on slave *** +STOP SLAVE; +CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5), +d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00', +e CHAR(20) DEFAULT 'Extra Column Testing') +ENGINE='TokuDB'; +*** Create t7 on Master *** +CREATE TABLE t7 (a INT PRIMARY KEY, b BLOB, c CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t7 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +SELECT * FROM t7 ORDER BY a; +a b c +1 b1b1 Kyle +2 b1b1 JOE +3 b1b1 QA +*** Select from slave *** +SELECT * FROM t7 ORDER BY a; +a b c d e +1 b1b1 Kyle 0000-00-00 00:00:00 Extra Column Testing +2 b1b1 JOE 0000-00-00 00:00:00 Extra Column Testing +3 b1b1 QA 0000-00-00 00:00:00 Extra Column Testing +*** Drop t7 *** +DROP TABLE t7; +*** Create t8 on slave *** +STOP SLAVE; +CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5), +d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00', +e INT)ENGINE='TokuDB'; +*** Create t8 on Master *** +CREATE TABLE t8 (a INT PRIMARY KEY, b BLOB, c CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +*** Drop t8 *** +DROP TABLE t8; +STOP SLAVE; +CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5), +d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +ON UPDATE CURRENT_TIMESTAMP, +e INT NOT NULL, +f text not null, +g text, +h blob not null, +i blob) ENGINE='TokuDB'; +*** Create t9 on Master *** +CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +select * from t9; +a b c d e f g h i +1 b1b1b1b1b1b1b1b1 Kyle CURRENT_TIMESTAMP 0 NULL NULL +2 b1b1b1b1b1b1b1b1 JOE CURRENT_TIMESTAMP 0 NULL NULL +3 b1b1b1b1b1b1b1b1 QA CURRENT_TIMESTAMP 0 NULL NULL +include/assert.inc [The values of column 'd' should have non-zero timetsamp.] +DROP TABLE t9; +*** Create t10 on slave *** +STOP SLAVE; +CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233', +c CHAR(5), e INT DEFAULT '1')ENGINE='TokuDB'; +*** Create t10 on Master *** +CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +*** Drop t10 *** +DROP TABLE t10; +*** Create t11 on slave *** +STOP SLAVE; +CREATE TABLE t11 (a INT KEY, b BLOB, f INT, +c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='TokuDB'; +*** Create t11 on Master *** +CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +*** Drop t11 *** +DROP TABLE t11; +*** Create t12 on slave *** +STOP SLAVE; +CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT, +c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='TokuDB'; +*** Create t12 on Master *** +CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t12 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +SELECT * FROM t12 ORDER BY a; +a b c +1 b1b1b1b1b1b1b1b1 Kyle +2 b1b1b1b1b1b1b1b1 JOE +3 b1b1b1b1b1b1b1b1 QA +*** Select on Slave *** +SELECT * FROM t12 ORDER BY a; +a b f c e +1 b1b1b1b1b1b1b1b1 Kyle test 1 +2 b1b1b1b1b1b1b1b1 JOE test 1 +3 b1b1b1b1b1b1b1b1 QA test 1 +*** Drop t12 *** +DROP TABLE t12; +**** Extra Colums End **** +*** BUG 22177 Start *** +*** Create t13 on slave *** +STOP SLAVE; +CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5), +d INT DEFAULT '1', +e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE='TokuDB'; +*** Create t13 on Master *** +CREATE TABLE t13 (a INT PRIMARY KEY, b BLOB, c CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t13 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); +SELECT * FROM t13 ORDER BY a; +a b c +1 b1b1b1b1b1b1b1b1 Kyle +2 b1b1b1b1b1b1b1b1 JOE +3 b1b1b1b1b1b1b1b1 QA +*** Select on Slave **** +SELECT * FROM t13 ORDER BY a; +a b c d e +1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +*** Drop t13 *** +DROP TABLE t13; +*** 22117 END *** +*** Alter Master Table Testing Start *** +*** Create t14 on slave *** +STOP SLAVE; +CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE='TokuDB'; +*** Create t14 on Master *** +CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1; +ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2; +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'), +(2,2.00,'This Test Should work',@b1,'JOE'), +(3,3.00,'If is does not, I will open a bug',@b1,'QA'); +SELECT * FROM t14 ORDER BY c1; +c1 c2 c3 c4 c5 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA +*** Select on Slave **** +SELECT * FROM t14 ORDER BY c1; +c1 c2 c3 c4 c5 c6 c7 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +*** Create t14a on slave *** +STOP SLAVE; +CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE='TokuDB'; +*** Create t14a on Master *** +CREATE TABLE t14a (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t14a () VALUES(1,@b1,'Kyle'), +(2,@b1,'JOE'), +(3,@b1,'QA'); +SELECT * FROM t14a ORDER BY c1; +c1 c4 c5 +1 b1b1b1b1b1b1b1b1 Kyle +2 b1b1b1b1b1b1b1b1 JOE +3 b1b1b1b1b1b1b1b1 QA +*** Select on Slave **** +SELECT * FROM t14a ORDER BY c1; +c1 c4 c5 c6 c7 +1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +STOP SLAVE; +*** Master Drop c5 *** +ALTER TABLE t14a DROP COLUMN c5; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t14a () VALUES(4,@b1), +(5,@b1), +(6,@b1); +SELECT * FROM t14a ORDER BY c1; +c1 c4 +1 b1b1b1b1b1b1b1b1 +2 b1b1b1b1b1b1b1b1 +3 b1b1b1b1b1b1b1b1 +4 b1b1b1b1b1b1b1b1 +5 b1b1b1b1b1b1b1b1 +6 b1b1b1b1b1b1b1b1 +*** Select on Slave **** +SELECT * FROM t14a ORDER BY c1; +c1 c4 c5 c6 c7 +1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +4 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP +5 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP +6 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP +DROP TABLE t14a; +*** connect to master and drop columns *** +ALTER TABLE t14 DROP COLUMN c2; +ALTER TABLE t14 DROP COLUMN c4; +*** Select from Master *** +SELECT * FROM t14 ORDER BY c1; +c1 c3 c5 +1 Replication Testing Extra Col Kyle +2 This Test Should work JOE +3 If is does not, I will open a bug QA +*** Select from Slave *** +SELECT * FROM t14 ORDER BY c1; +c1 c3 c5 c6 c7 +1 Replication Testing Extra Col Kyle 1 CURRENT_TIMESTAMP +2 This Test Should work JOE 1 CURRENT_TIMESTAMP +3 If is does not, I will open a bug QA 1 CURRENT_TIMESTAMP +*** Drop t14 *** +DROP TABLE t14; +*** Create t15 on slave *** +STOP SLAVE; +CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT, +c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE='TokuDB'; +*** Create t15 on Master *** +CREATE TABLE t15 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT, +c4 BLOB, c5 CHAR(5)) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +call mtr.add_suppression("Error .Unknown table .t6.. on query.* Error_code: 1051"); +call mtr.add_suppression("Error .Duplicate column name .c6.. on query.* Error_code: 1060"); +call mtr.add_suppression("Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535"); +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t15 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'), +(2,2.00,'This Test Should work',@b1,'JOE'), +(3,3.00,'If is does not, I will open a bug',@b1,'QA'); +SELECT * FROM t15 ORDER BY c1; +c1 c2 c3 c4 c5 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA +*** Select on Slave **** +SELECT * FROM t15 ORDER BY c1; +c1 c2 c3 c4 c5 c6 c7 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +*** Add column on master that is a Extra on Slave *** +ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5; +******************************************************** +*** Expect slave to fail with Error ER_DUP_FIELDNAME *** +******************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1060] +*** Try to insert in master **** +INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2); +SELECT * FROM t15 ORDER BY c1; +c1 c2 c3 c4 c5 c6 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle NULL +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE NULL +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA NULL +5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 +*** Try to select from slave **** +SELECT * FROM t15 ORDER BY c1; +c1 c2 c3 c4 c5 c6 c7 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 CURRENT_TIMESTAMP +*** DROP TABLE t15 *** +DROP TABLE t15; +*** Create t16 on slave *** +STOP SLAVE; +CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT, +c4 BLOB, c5 CHAR(5), +c6 INT DEFAULT '1', +c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP +)ENGINE='TokuDB'; +*** Create t16 on Master *** +CREATE TABLE t16 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT, +c4 BLOB, c5 CHAR(5))ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +set @b1 = 'b1b1b1b1'; +set @b1 = concat(@b1,@b1); +INSERT INTO t16 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'), +(2,2.00,'This Test Should work',@b1,'JOE'), +(3,3.00,'If is does not, I will open a bug',@b1,'QA'); +SELECT * FROM t16 ORDER BY c1; +c1 c2 c3 c4 c5 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA +*** Select on Slave **** +SELECT * FROM t16 ORDER BY c1; +c1 c2 c3 c4 c5 c6 c7 +1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP +2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP +3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP +*** Add Partition on master *** +ALTER TABLE t16 PARTITION BY KEY(c1) PARTITIONS 4; +INSERT INTO t16 () VALUES(4,1.00,'Replication Rocks',@b1,'Omer'); +SHOW CREATE TABLE t16; +Table Create Table +t16 CREATE TABLE `t16` ( + `c1` int(11) NOT NULL, + `c2` decimal(8,2) DEFAULT NULL, + `c3` text, + `c4` blob, + `c5` char(5) DEFAULT NULL, + PRIMARY KEY (`c1`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY KEY (c1) +PARTITIONS 4 */ +*** Show table on Slave **** +SHOW CREATE TABLE t16; +Table Create Table +t16 CREATE TABLE `t16` ( + `c1` int(11) NOT NULL, + `c2` decimal(8,2) DEFAULT NULL, + `c3` text, + `c4` blob, + `c5` char(5) DEFAULT NULL, + `c6` int(11) DEFAULT '1', + `c7` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`c1`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY KEY (c1) +PARTITIONS 4 */ +*** DROP TABLE t16 *** +DROP TABLE t16; +*** Alter Master End *** +*** Create t17 on slave *** +STOP SLAVE; +CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5), +d FLOAT DEFAULT '2.00', +e CHAR(5) DEFAULT 'TEST2') +ENGINE='TokuDB'; +*** Create t17 on Master *** +CREATE TABLE t17 (a BIGINT PRIMARY KEY, b INT, c CHAR(10) +) ENGINE='TokuDB'; +*** Start Slave *** +include/rpl_reset.inc +*** Master Data Insert *** +INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); +****************************************************************** +*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** +****************************************************************** +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +** DROP table t17 *** +DROP TABLE t17; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_mixed_row_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_mixed_row_tokudb.result new file mode 100644 index 00000000000..75cfb927a87 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_mixed_row_tokudb.result @@ -0,0 +1,132 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t4 ( +id INT(5) unsigned NOT NULL auto_increment, +name varchar(15) NOT NULL default '', +number varchar(35) NOT NULL default 'default', +PRIMARY KEY (id), +UNIQUE KEY unique_rec (name,number) +) ENGINE=TokuDB; +LOAD DATA +INFILE '../../std_data/loaddata_pair.dat' +REPLACE INTO TABLE t4 +(name,number); +SELECT * FROM t4; +id name number +1 XXX 12345 +2 XXY 12345 +SELECT * FROM t4; +id name number +1 XXX 12345 +2 XXY 12345 +LOAD DATA +INFILE '../../std_data/loaddata_pair.dat' +REPLACE INTO TABLE t4 +(name,number); +SELECT * FROM t4; +id name number +4 XXX 12345 +5 XXY 12345 +SELECT * FROM t4; +id name number +4 XXX 12345 +5 XXY 12345 +FLUSH LOGS; +FLUSH LOGS; +DROP DATABASE IF EXISTS mysqltest1; +CREATE DATABASE mysqltest1; +CREATE TEMPORARY TABLE mysqltest1.tmp (f1 BIGINT); +CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="TokuDB"; +SET AUTOCOMMIT = 0; +-------- switch to slave -------- +ALTER TABLE mysqltest1.t1 ENGINE = MyISAM; +SHOW CREATE TABLE mysqltest1.t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` bigint(20) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +-------- switch to master -------- +INSERT INTO mysqltest1.t1 SET f1= 1; +DROP TEMPORARY TABLE mysqltest1.tmp; +ROLLBACK; +SHOW CREATE TABLE mysqltest1.tmp; +ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist +######### Must return no rows here ######### +SELECT COUNT(*) FROM mysqltest1.t1; +COUNT(*) +0 +INSERT INTO mysqltest1.t1 SET f1= 2; +CREATE TEMPORARY TABLE mysqltest1.tmp2(a INT); +ROLLBACK; +SHOW CREATE TABLE mysqltest1.tmp2; +Table Create Table +tmp2 CREATE TEMPORARY TABLE `tmp2` ( + `a` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +######### Must return no rows here ######### +SELECT COUNT(*) FROM mysqltest1.t1; +COUNT(*) +0 +-------- switch to slave -------- +SHOW CREATE TABLE mysqltest1.tmp; +ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist +SHOW CREATE TABLE mysqltest1.tmp2; +ERROR 42S02: Table 'mysqltest1.tmp2' doesn't exist +######### t1 has two rows here: the transaction not rolled back since t1 uses MyISAM ######### +SELECT COUNT(*) FROM mysqltest1.t1; +COUNT(*) +2 +FLUSH LOGS; +-------- switch to master -------- +FLUSH LOGS; +DROP DATABASE mysqltest1; +End of 5.1 tests +# +# Bug#39675 rename tables on innodb tables with pending +# transactions causes slave data issue. +# +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +CREATE TABLE t1 ( +id INT PRIMARY KEY auto_increment, +b INT DEFAULT NULL +) ENGINE=TokuDB; +CREATE TABLE t2 ( +id INT PRIMARY KEY auto_increment, +b INT DEFAULT NULL +) ENGINE=TokuDB; +INSERT INTO t1 (b) VALUES (1),(2),(3); +BEGIN; +INSERT INTO t1(b) VALUES (4); +-------- switch to master1 -------- +RENAME TABLE t1 TO t3, t2 TO t1;; +-------- switch to master -------- +COMMIT; +-------- switch to master1 -------- +-------- switch to master -------- +SELECT * FROM t1; +id b +SELECT * FROM t3; +id b +1 1 +2 2 +3 3 +4 4 +-------- switch to slave -------- +SELECT * FROM t1; +id b +SELECT * FROM t3; +id b +1 1 +2 2 +3 3 +4 4 +-------- switch to master -------- +DROP TABLE t1; +DROP TABLE t3; +End of 6.0 tests diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_not_null_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_not_null_tokudb.result new file mode 100644 index 00000000000..ca044213a31 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_not_null_tokudb.result @@ -0,0 +1,210 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +SET SQL_LOG_BIN= 0; +CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, +`c` INT DEFAULT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, +`c` INT DEFAULT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +SET SQL_LOG_BIN= 1; +CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, +`c` INT DEFAULT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', +`c` INT DEFAULT 500, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +************* EXECUTION WITH INSERTS ************* +INSERT INTO t1(a,b,c) VALUES (1, null, 1); +INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); +INSERT INTO t1(a,b) VALUES (3, null); +INSERT INTO t1(a,c) VALUES (4, 4); +INSERT INTO t1(a) VALUES (5); +INSERT INTO t2(a,b) VALUES (1, null); +INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); +INSERT INTO t2(a) VALUES (3); +INSERT INTO t3(a,b) VALUES (1, null); +INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); +INSERT INTO t3(a) VALUES (3); +INSERT INTO t4(a,b,c) VALUES (1, null, 1); +INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); +INSERT INTO t4(a,b) VALUES (3, null); +INSERT INTO t4(a,c) VALUES (4, 4); +INSERT INTO t4(a) VALUES (5); +************* SHOWING THE RESULT SETS WITH INSERTS ************* +include/sync_slave_sql_with_master.inc +TABLES t1 and t2 must be equal otherwise an error will be thrown. +include/diff_tables.inc [master:t1, slave:t1] +include/diff_tables.inc [master:t2, slave:t2] +TABLES t2 and t3 must be different. +SELECT * FROM t3 ORDER BY a; +a b +1 NULL +2 1111-11-11 +3 NULL +SELECT * FROM t3 ORDER BY a; +a b c +1 NULL 500 +2 1111-11-11 500 +3 NULL 500 +SELECT * FROM t4 ORDER BY a; +a b c +1 NULL 1 +2 1111-11-11 2 +3 NULL NULL +4 NULL 4 +5 NULL NULL +SELECT * FROM t4 ORDER BY a; +a b +1 NULL +2 1111-11-11 +3 NULL +4 NULL +5 NULL +************* EXECUTION WITH UPDATES and REPLACES ************* +DELETE FROM t1; +INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); +REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); +UPDATE t1 set b= NULL, c= 300 where a= 1; +REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); +************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* +include/sync_slave_sql_with_master.inc +TABLES t1 and t2 must be equal otherwise an error will be thrown. +include/diff_tables.inc [master:t1, slave:t1] +************* CLEANING ************* +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +DROP TABLE t4; +include/sync_slave_sql_with_master.inc +SET SQL_LOG_BIN= 0; +CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL, +PRIMARY KEY (`a`)) ENGINE= TokuDB; +SET SQL_LOG_BIN= 1; +CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, +PRIMARY KEY (`a`)) ENGINE= TokuDB; +************* EXECUTION WITH INSERTS ************* +INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); +INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); +INSERT INTO t1(a,b) VALUES (3, null); +INSERT INTO t1(a,c) VALUES (4, b'01'); +INSERT INTO t1(a) VALUES (5); +************* SHOWING THE RESULT SETS WITH INSERTS ************* +TABLES t1 and t2 must be different. +include/sync_slave_sql_with_master.inc +SELECT a,b+0,c+0 FROM t1 ORDER BY a; +a b+0 c+0 +1 NULL 1 +2 0 1 +3 NULL NULL +4 NULL 1 +5 NULL NULL +SELECT a,b+0,c+0 FROM t1 ORDER BY a; +a b+0 c+0 +1 NULL 1 +2 0 1 +3 NULL NULL +4 NULL 1 +5 NULL NULL +************* EXECUTION WITH UPDATES and REPLACES ************* +DELETE FROM t1; +INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); +REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); +UPDATE t1 set b= NULL, c= b'00' where a= 1; +REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); +************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* +TABLES t1 and t2 must be equal otherwise an error will be thrown. +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +include/sync_slave_sql_with_master.inc +################################################################################ +# NULL ---> NOT NULL (STRICT MODE) +# UNCOMMENT THIS AFTER FIXING BUG#43992 +################################################################################ +################################################################################ +# NULL ---> NOT NULL (NON-STRICT MODE) +################################################################################ +SET SQL_LOG_BIN= 0; +CREATE TABLE t1(`a` INT NOT NULL, `b` INT, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t2(`a` INT NOT NULL, `b` INT, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t3(`a` INT NOT NULL, `b` INT, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +SET SQL_LOG_BIN= 1; +CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, +`c` INT NOT NULL, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, +`c` INT, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, +`c` INT DEFAULT 500, +PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; +************* EXECUTION WITH INSERTS ************* +INSERT INTO t1(a) VALUES (1); +INSERT INTO t1(a, b) VALUES (2, NULL); +INSERT INTO t1(a, b) VALUES (3, 1); +INSERT INTO t2(a) VALUES (1); +INSERT INTO t2(a, b) VALUES (2, NULL); +INSERT INTO t2(a, b) VALUES (3, 1); +INSERT INTO t3(a) VALUES (1); +INSERT INTO t3(a, b) VALUES (2, NULL); +INSERT INTO t3(a, b) VALUES (3, 1); +INSERT INTO t3(a, b) VALUES (4, 1); +REPLACE INTO t3(a, b) VALUES (5, null); +REPLACE INTO t3(a, b) VALUES (3, null); +UPDATE t3 SET b = NULL where a = 4; +************* SHOWING THE RESULT SETS ************* +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY a; +a b +1 NULL +2 NULL +3 1 +SELECT * FROM t1 ORDER BY a; +a b c +1 0 0 +2 0 0 +3 1 0 +SELECT * FROM t2 ORDER BY a; +a b +1 NULL +2 NULL +3 1 +SELECT * FROM t2 ORDER BY a; +a b c +1 0 NULL +2 0 NULL +3 1 NULL +SELECT * FROM t3 ORDER BY a; +a b +1 NULL +2 NULL +3 NULL +4 NULL +5 NULL +SELECT * FROM t3 ORDER BY a; +a b c +1 0 500 +2 0 500 +3 0 500 +4 0 500 +5 0 500 +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb.result new file mode 100644 index 00000000000..7c76cccd4d1 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb.result @@ -0,0 +1,73 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Slave: Error dropping database'); +include/stop_slave.inc +start slave; +include/sync_slave_sql_with_master.inc +stop slave sql_thread; +insert into test0.benchmark set state='slave is processing load'; +start slave sql_thread; +use test0; +insert into benchmark set state='slave ends load'; +use test; +select * from test1.benchmark into outfile 'benchmark.out'; +select ts from test0.benchmark where state like 'master started load' into @m_0; +select ts from test0.benchmark where state like 'master ends load' into @m_1; +select ts from test0.benchmark where state like 'slave takes on load' into @s_m0; +select ts from test0.benchmark where state like 'slave is supposed to finish with load' into @s_m1; +select ts from test0.benchmark where state like 'slave ends load' into @s_1; +select ts from test0.benchmark where state like 'slave is processing load' into @s_0; +select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta.out'; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test15.ti_nk, slave:test15.ti_nk] +include/diff_tables.inc [master:test15.ti_wk, slave:test15.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test14.ti_nk, slave:test14.ti_nk] +include/diff_tables.inc [master:test14.ti_wk, slave:test14.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test13.ti_nk, slave:test13.ti_nk] +include/diff_tables.inc [master:test13.ti_wk, slave:test13.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test12.ti_nk, slave:test12.ti_nk] +include/diff_tables.inc [master:test12.ti_wk, slave:test12.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test11.ti_nk, slave:test11.ti_nk] +include/diff_tables.inc [master:test11.ti_wk, slave:test11.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test10.ti_nk, slave:test10.ti_nk] +include/diff_tables.inc [master:test10.ti_wk, slave:test10.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test9.ti_nk, slave:test9.ti_nk] +include/diff_tables.inc [master:test9.ti_wk, slave:test9.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test8.ti_nk, slave:test8.ti_nk] +include/diff_tables.inc [master:test8.ti_wk, slave:test8.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test7.ti_nk, slave:test7.ti_nk] +include/diff_tables.inc [master:test7.ti_wk, slave:test7.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test6.ti_nk, slave:test6.ti_nk] +include/diff_tables.inc [master:test6.ti_wk, slave:test6.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test5.ti_nk, slave:test5.ti_nk] +include/diff_tables.inc [master:test5.ti_wk, slave:test5.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test4.ti_nk, slave:test4.ti_nk] +include/diff_tables.inc [master:test4.ti_wk, slave:test4.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test3.ti_nk, slave:test3.ti_nk] +include/diff_tables.inc [master:test3.ti_wk, slave:test3.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test2.ti_nk, slave:test2.ti_nk] +include/diff_tables.inc [master:test2.ti_wk, slave:test2.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test1.ti_nk, slave:test1.ti_nk] +include/diff_tables.inc [master:test1.ti_wk, slave:test1.ti_wk] +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:test0.ti_nk, slave:test0.ti_nk] +include/diff_tables.inc [master:test0.ti_wk, slave:test0.ti_wk] +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_delete_pk.result b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_delete_pk.result new file mode 100644 index 00000000000..afbc4b50da8 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_delete_pk.result @@ -0,0 +1,29 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note 1753 slave_transaction_retries is not supported in multi-threaded slave mode. In the event of a transient failure, the slave will not retry the transaction and will stop. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows OFF +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +include/diff_tables.inc [master:test.t, slave:test.t] +delete from t where a=2; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result new file mode 100644 index 00000000000..7aab8947940 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result @@ -0,0 +1,39 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note 1753 slave_transaction_retries is not supported in multi-threaded slave mode. In the event of a transient failure, the slave will not retry the transaction and will stop. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows OFF +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +1 +select * from t; +a b +1 3 +2 2 +3 5 +4 3 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_write_pk.result b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_write_pk.result new file mode 100644 index 00000000000..64b495350c2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_parallel_tokudb_write_pk.result @@ -0,0 +1,23 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note 1753 slave_transaction_retries is not supported in multi-threaded slave mode. In the event of a transient failure, the slave will not retry the transaction and will stop. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_unique_checks%'; +Variable_name Value +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_partition_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_partition_tokudb.result new file mode 100644 index 00000000000..de9f1fbc122 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_partition_tokudb.result @@ -0,0 +1,150 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +use test; +CREATE TABLE test.regular_tbl(id INT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, user CHAR(255), uuidf VARBINARY(255), +fkid INT, filler VARCHAR(255), +PRIMARY KEY(id)) +ENGINE=TokuDB; +CREATE TABLE test.byrange_tbl(id INT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, user CHAR(255), uuidf VARBINARY(255), +fkid INT, filler VARCHAR(255), +PRIMARY KEY(id)) +ENGINE=TokuDB +PARTITION BY RANGE(id) +(PARTITION pa100 values less than (100), +PARTITION paMax values less than MAXVALUE); +CREATE PROCEDURE test.proc_norm() +BEGIN +DECLARE ins_count INT DEFAULT 99; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +SET cur_user= "current_user@localhost"; +SET local_uuid= "36774b1c-6374-11df-a2ca-0ef7ac7a5f6c"; +WHILE ins_count > 0 DO +# Must use local variables for statment based replication +INSERT INTO test.regular_tbl VALUES (NULL, NOW(), cur_user, local_uuid, +ins_count,'Non partitioned table! Going to test replication for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +END| +CREATE PROCEDURE test.proc_byrange() +BEGIN +DECLARE ins_count INT DEFAULT 200; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +SET cur_user= "current_user@localhost"; +SET local_uuid= "36774b1c-6374-11df-a2ca-0ef7ac7a5f6c"; +WHILE ins_count > 0 DO +INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), cur_user, local_uuid, +ins_count + 100,'Partitioned table! Going to test replication for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +END| +CALL test.proc_norm(); +SELECT count(*) as "Master regular" FROM test.regular_tbl; +Master regular +99 +CALL test.proc_byrange(); +SELECT count(*) as "Master byrange" FROM test.byrange_tbl; +Master byrange +200 +show create table test.byrange_tbl; +Table Create Table +byrange_tbl CREATE TABLE `byrange_tbl` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user` char(255) DEFAULT NULL, + `uuidf` varbinary(255) DEFAULT NULL, + `fkid` int(11) DEFAULT NULL, + `filler` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=TokuDB AUTO_INCREMENT=201 DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY RANGE (id) +(PARTITION pa100 VALUES LESS THAN (100) ENGINE = TokuDB, + PARTITION paMax VALUES LESS THAN MAXVALUE ENGINE = TokuDB) */ +show create table test.regular_tbl; +Table Create Table +regular_tbl CREATE TABLE `regular_tbl` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user` char(255) DEFAULT NULL, + `uuidf` varbinary(255) DEFAULT NULL, + `fkid` int(11) DEFAULT NULL, + `filler` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=TokuDB AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 +ALTER TABLE test.byrange_tbl EXCHANGE PARTITION pa100 WITH TABLE test.regular_tbl; +SELECT * FROM test.byrange_tbl ORDER BY fkid LIMIT 2; +id dt user uuidf fkid filler +99 date-time USER UUID 1 Non partitioned table! Going to test replication for MySQL +98 date-time USER UUID 2 Non partitioned table! Going to test replication for MySQL +SELECT * FROM test.byrange_tbl ORDER BY fkid DESC LIMIT 2; +id dt user uuidf fkid filler +100 date-time USER UUID 201 Partitioned table! Going to test replication for MySQL +101 date-time USER UUID 200 Partitioned table! Going to test replication for MySQL +SELECT * FROM test.regular_tbl ORDER BY fkid LIMIT 2; +id dt user uuidf fkid filler +99 date-time USER UUID 202 Partitioned table! Going to test replication for MySQL +98 date-time USER UUID 203 Partitioned table! Going to test replication for MySQL +SELECT * FROM test.regular_tbl ORDER BY fkid DESC LIMIT 2; +id dt user uuidf fkid filler +1 date-time USER UUID 300 Partitioned table! Going to test replication for MySQL +2 date-time USER UUID 299 Partitioned table! Going to test replication for MySQL +show create table test.byrange_tbl; +Table Create Table +byrange_tbl CREATE TABLE `byrange_tbl` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user` char(255) DEFAULT NULL, + `uuidf` varbinary(255) DEFAULT NULL, + `fkid` int(11) DEFAULT NULL, + `filler` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=TokuDB AUTO_INCREMENT=201 DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY RANGE (id) +(PARTITION pa100 VALUES LESS THAN (100) ENGINE = TokuDB, + PARTITION paMax VALUES LESS THAN MAXVALUE ENGINE = TokuDB) */ +show create table test.regular_tbl; +Table Create Table +regular_tbl CREATE TABLE `regular_tbl` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user` char(255) DEFAULT NULL, + `uuidf` varbinary(255) DEFAULT NULL, + `fkid` int(11) DEFAULT NULL, + `filler` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=TokuDB AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 +SELECT count(*) "Slave norm" FROM test.regular_tbl; +Slave norm +99 +SELECT count(*) "Slave byrange" FROM test.byrange_tbl; +Slave byrange +200 +SELECT * FROM test.byrange_tbl ORDER BY fkid LIMIT 2; +id dt user uuidf fkid filler +99 date-time USER UUID 1 Non partitioned table! Going to test replication for MySQL +98 date-time USER UUID 2 Non partitioned table! Going to test replication for MySQL +SELECT * FROM test.byrange_tbl ORDER BY fkid DESC LIMIT 2; +id dt user uuidf fkid filler +100 date-time USER UUID 201 Partitioned table! Going to test replication for MySQL +101 date-time USER UUID 200 Partitioned table! Going to test replication for MySQL +SELECT * FROM test.regular_tbl ORDER BY fkid LIMIT 2; +id dt user uuidf fkid filler +99 date-time USER UUID 202 Partitioned table! Going to test replication for MySQL +98 date-time USER UUID 203 Partitioned table! Going to test replication for MySQL +SELECT * FROM test.regular_tbl ORDER BY fkid DESC LIMIT 2; +id dt user uuidf fkid filler +1 date-time USER UUID 300 Partitioned table! Going to test replication for MySQL +2 date-time USER UUID 299 Partitioned table! Going to test replication for MySQL +DROP PROCEDURE test.proc_norm; +DROP PROCEDURE test.proc_byrange; +DROP TABLE test.regular_tbl; +DROP TABLE test.byrange_tbl; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_relay_space_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_relay_space_tokudb.result new file mode 100644 index 00000000000..20508747c25 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_relay_space_tokudb.result @@ -0,0 +1,27 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +SHOW VARIABLES LIKE 'relay_log_space_limit'; +Variable_name Value +relay_log_space_limit 0 +CREATE TABLE t1 (name varchar(64), age smallint(3))ENGINE=TokuDB; +INSERT INTO t1 SET name='Andy', age=31; +INSERT INTO t1 SET name='Jacob', age=2; +INSERT INTO t1 SET name='Caleb', age=1; +ALTER TABLE t1 ADD id int(8) ZEROFILL AUTO_INCREMENT PRIMARY KEY, +ALGORITHM=COPY; +SELECT * FROM t1 ORDER BY id; +name age id +Andy 31 00000001 +Jacob 2 00000002 +Caleb 1 00000003 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY id; +name age id +Andy 31 00000001 +Jacob 2 00000002 +Caleb 1 00000003 +DROP TABLE t1; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_rfr_disable_on_expl_pk_absence.result b/storage/tokudb/mysql-test/rpl/r/rpl_rfr_disable_on_expl_pk_absence.result new file mode 100644 index 00000000000..981a833aea5 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_rfr_disable_on_expl_pk_absence.result @@ -0,0 +1,47 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression("read free replication is disabled for tokudb table"); +CREATE TABLE t (a int(11), b char(20)) ENGINE = TokuDB; +INSERT INTO t (a, b) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'); +SELECT * FROM t; +a b +1 a +2 b +3 c +4 d +5 e +UPDATE t SET a = a + 10 WHERE b = 'b'; +SELECT * FROM t; +a b +1 a +12 b +3 c +4 d +5 e +SELECT * FROM t; +a b +1 a +12 b +3 c +4 d +5 e +UPDATE t SET a = a + 10 WHERE b = 'b'; +SELECT * FROM t; +a b +1 a +22 b +3 c +4 d +5 e +SELECT * FROM t; +a b +1 a +22 b +3 c +4 d +5 e +DROP TABLE t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_basic_3tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_basic_3tokudb.result new file mode 100644 index 00000000000..62714d1031c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_basic_3tokudb.result @@ -0,0 +1,679 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'TokuDB' ; +SELECT * FROM t1; +C1 C2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +C1 C2 +INSERT INTO t1 VALUES ('A','B'), ('X','Y'), ('X','X'); +INSERT INTO t1 VALUES ('A','C'), ('X','Z'), ('A','A'); +SELECT * FROM t1 ORDER BY C1,C2; +C1 C2 +A A +A B +A C +X X +X Y +X Z +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY C1,C2; +C1 C2 +A A +A B +A C +X X +X Y +X Z +DELETE FROM t1 WHERE C1 = C2; +SELECT * FROM t1 ORDER BY C1,C2; +C1 C2 +A B +A C +X Y +X Z +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY C1,C2; +C1 C2 +A B +A C +X Y +X Z +UPDATE t1 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C'; +SELECT * FROM t1 ORDER BY C1,C2; +C1 C2 +A B +A I +X Y +X Z +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY C1,C2; +C1 C2 +A B +A I +X Y +X Z +include/assert.inc [Counter for COM_COMMIT is consistent with the number of actual commits] +include/assert.inc [Counter for COM_INSERT is consistent with the number of actual inserts] +include/assert.inc [Counter for COM_DELETE is consistent with the number of actual deletes] +include/assert.inc [Counter for COM_UPDATE is consistent with the number of actual updates] +UPDATE t1 SET c2 = 'Q' WHERE c1 = 'A' AND c2 = 'N'; +SELECT * FROM t1 ORDER BY c1,c2; +C1 C2 +A B +A I +X Y +X Z +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY c1,c2; +C1 C2 +A B +A I +X Y +X Z +CREATE TABLE t2 (c1 INT, c12 char(1), c2 INT, PRIMARY KEY (c1)) ENGINE = 'TokuDB' ; +INSERT INTO t2 +VALUES (1,'A',2), (2,'A',4), (3,'A',9), (4,'A',15), (5,'A',25), +(6,'A',35), (7,'A',50), (8,'A',64), (9,'A',81); +SELECT * FROM t2 ORDER BY c1,c2; +c1 c12 c2 +1 A 2 +2 A 4 +3 A 9 +4 A 15 +5 A 25 +6 A 35 +7 A 50 +8 A 64 +9 A 81 +SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; +c1 c12 c2 +2 A 4 +3 A 9 +5 A 25 +8 A 64 +9 A 81 +include/sync_slave_sql_with_master.inc +SELECT * FROM t2 ORDER BY c1,c2; +c1 c12 c2 +1 A 2 +2 A 4 +3 A 9 +4 A 15 +5 A 25 +6 A 35 +7 A 50 +8 A 64 +9 A 81 +SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; +c1 c12 c2 +2 A 4 +3 A 9 +5 A 25 +8 A 64 +9 A 81 +UPDATE t2 SET c2 = c1*c1 WHERE c2 != c1*c1; +SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; +c1 c12 c2 +1 A 1 +2 A 4 +3 A 9 +4 A 16 +5 A 25 +6 A 36 +7 A 49 +8 A 64 +9 A 81 +include/sync_slave_sql_with_master.inc +SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; +c1 c12 c2 +1 A 1 +2 A 4 +3 A 9 +4 A 16 +5 A 25 +6 A 36 +7 A 49 +8 A 64 +9 A 81 +UPDATE t2 SET c12 = 'Q' WHERE c1 = 1 AND c2 = 999; +SELECT * FROM t2 ORDER BY c1,c2; +c1 c12 c2 +1 A 1 +2 A 4 +3 A 9 +4 A 16 +5 A 25 +6 A 36 +7 A 49 +8 A 64 +9 A 81 +include/sync_slave_sql_with_master.inc +SELECT * FROM t2 ORDER BY c1,c2; +c1 c12 c2 +1 A 1 +2 A 4 +3 A 9 +4 A 16 +5 A 25 +6 A 36 +7 A 49 +8 A 64 +9 A 81 +DELETE FROM t2 WHERE c1 % 4 = 0; +SELECT * FROM t2 ORDER BY c1,c2; +c1 c12 c2 +1 A 1 +2 A 4 +3 A 9 +5 A 25 +6 A 36 +7 A 49 +9 A 81 +include/sync_slave_sql_with_master.inc +SELECT * FROM t2 ORDER BY c1,c2; +c1 c12 c2 +1 A 1 +2 A 4 +3 A 9 +5 A 25 +6 A 36 +7 A 49 +9 A 81 +UPDATE t2 SET c12='X'; +CREATE TABLE t3 (C1 CHAR(1), C2 CHAR(1), pk1 INT, C3 CHAR(1), pk2 INT, PRIMARY KEY (pk1,pk2)) ENGINE = 'TokuDB' ; +INSERT INTO t3 VALUES ('A','B',1,'B',1), ('X','Y',2,'B',1), ('X','X',3,'B',1); +INSERT INTO t3 VALUES ('A','C',1,'B',2), ('X','Z',2,'B',2), ('A','A',3,'B',2); +SELECT * FROM t3 ORDER BY C1,C2; +C1 C2 pk1 C3 pk2 +A A 3 B 2 +A B 1 B 1 +A C 1 B 2 +X X 3 B 1 +X Y 2 B 1 +X Z 2 B 2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t3 ORDER BY C1,C2; +C1 C2 pk1 C3 pk2 +A A 3 B 2 +A B 1 B 1 +A C 1 B 2 +X X 3 B 1 +X Y 2 B 1 +X Z 2 B 2 +DELETE FROM t3 WHERE C1 = C2; +SELECT * FROM t3 ORDER BY C1,C2; +C1 C2 pk1 C3 pk2 +A B 1 B 1 +A C 1 B 2 +X Y 2 B 1 +X Z 2 B 2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t3 ORDER BY C1,C2; +C1 C2 pk1 C3 pk2 +A B 1 B 1 +A C 1 B 2 +X Y 2 B 1 +X Z 2 B 2 +UPDATE t3 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C'; +SELECT * FROM t3 ORDER BY C1,C2; +C1 C2 pk1 C3 pk2 +A B 1 B 1 +A I 1 B 2 +X Y 2 B 1 +X Z 2 B 2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t3 ORDER BY C1,C2; +C1 C2 pk1 C3 pk2 +A B 1 B 1 +A I 1 B 2 +X Y 2 B 1 +X Z 2 B 2 +CREATE TABLE t6 (C1 CHAR(1), C2 CHAR(1), C3 INT) ENGINE = 'TokuDB'; +INSERT INTO t6 VALUES ('A','B',1), ('X','Y',2), ('X','X',3); +INSERT INTO t6 VALUES ('A','C',4), ('X','Z',5), ('A','A',6); +SELECT * FROM t6 ORDER BY C3; +C1 C2 C3 +A B 1 +X Y 2 +X X 3 +A C 4 +X Z 5 +A A 6 +include/sync_slave_sql_with_master.inc +SELECT * FROM t6 ORDER BY C3; +C1 C2 C3 +A B 1 +X Y 2 +X X 3 +A C 4 +X Z 5 +A A 6 +DELETE FROM t6 WHERE C1 = C2; +SELECT * FROM t6 ORDER BY C3; +C1 C2 C3 +A B 1 +X Y 2 +A C 4 +X Z 5 +include/sync_slave_sql_with_master.inc +SELECT * FROM t6 ORDER BY C3; +C1 C2 C3 +A B 1 +X Y 2 +A C 4 +X Z 5 +UPDATE t6 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C'; +SELECT * FROM t6 ORDER BY C3; +C1 C2 C3 +A B 1 +X Y 2 +A I 4 +X Z 5 +include/sync_slave_sql_with_master.inc +SELECT * FROM t6 ORDER BY C3; +C1 C2 C3 +A B 1 +X Y 2 +A I 4 +X Z 5 +CREATE TABLE t5 (C1 CHAR(1), C2 CHAR(1), C3 INT PRIMARY KEY) ENGINE = 'TokuDB' ; +INSERT INTO t5 VALUES ('A','B',1), ('X','Y',2), ('X','X',3); +INSERT INTO t5 VALUES ('A','C',4), ('X','Z',5), ('A','A',6); +UPDATE t5,t2,t3 SET t5.C2='Q', t2.c12='R', t3.C3 ='S' WHERE t5.C1 = t2.c12 AND t5.C1 = t3.C1; +SELECT * FROM t5,t2,t3 WHERE t5.C2='Q' AND t2.c12='R' AND t3.C3 ='S' ORDER BY t5.C3,t2.c1,t3.pk1,t3.pk2; +C1 C2 C3 c1 c12 c2 C1 C2 pk1 C3 pk2 +X Q 2 1 R 1 X Y 2 S 1 +X Q 2 1 R 1 X Z 2 S 2 +X Q 2 2 R 4 X Y 2 S 1 +X Q 2 2 R 4 X Z 2 S 2 +X Q 2 3 R 9 X Y 2 S 1 +X Q 2 3 R 9 X Z 2 S 2 +X Q 2 5 R 25 X Y 2 S 1 +X Q 2 5 R 25 X Z 2 S 2 +X Q 2 6 R 36 X Y 2 S 1 +X Q 2 6 R 36 X Z 2 S 2 +X Q 2 7 R 49 X Y 2 S 1 +X Q 2 7 R 49 X Z 2 S 2 +X Q 2 9 R 81 X Y 2 S 1 +X Q 2 9 R 81 X Z 2 S 2 +X Q 3 1 R 1 X Y 2 S 1 +X Q 3 1 R 1 X Z 2 S 2 +X Q 3 2 R 4 X Y 2 S 1 +X Q 3 2 R 4 X Z 2 S 2 +X Q 3 3 R 9 X Y 2 S 1 +X Q 3 3 R 9 X Z 2 S 2 +X Q 3 5 R 25 X Y 2 S 1 +X Q 3 5 R 25 X Z 2 S 2 +X Q 3 6 R 36 X Y 2 S 1 +X Q 3 6 R 36 X Z 2 S 2 +X Q 3 7 R 49 X Y 2 S 1 +X Q 3 7 R 49 X Z 2 S 2 +X Q 3 9 R 81 X Y 2 S 1 +X Q 3 9 R 81 X Z 2 S 2 +X Q 5 1 R 1 X Y 2 S 1 +X Q 5 1 R 1 X Z 2 S 2 +X Q 5 2 R 4 X Y 2 S 1 +X Q 5 2 R 4 X Z 2 S 2 +X Q 5 3 R 9 X Y 2 S 1 +X Q 5 3 R 9 X Z 2 S 2 +X Q 5 5 R 25 X Y 2 S 1 +X Q 5 5 R 25 X Z 2 S 2 +X Q 5 6 R 36 X Y 2 S 1 +X Q 5 6 R 36 X Z 2 S 2 +X Q 5 7 R 49 X Y 2 S 1 +X Q 5 7 R 49 X Z 2 S 2 +X Q 5 9 R 81 X Y 2 S 1 +X Q 5 9 R 81 X Z 2 S 2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t5,t2,t3 WHERE t5.C2='Q' AND t2.c12='R' AND t3.C3 ='S' ORDER BY t5.C3,t2.c1,t3.pk1,t3.pk2; +C1 C2 C3 c1 c12 c2 C1 C2 pk1 C3 pk2 +X Q 2 1 R 1 X Y 2 S 1 +X Q 2 1 R 1 X Z 2 S 2 +X Q 2 2 R 4 X Y 2 S 1 +X Q 2 2 R 4 X Z 2 S 2 +X Q 2 3 R 9 X Y 2 S 1 +X Q 2 3 R 9 X Z 2 S 2 +X Q 2 5 R 25 X Y 2 S 1 +X Q 2 5 R 25 X Z 2 S 2 +X Q 2 6 R 36 X Y 2 S 1 +X Q 2 6 R 36 X Z 2 S 2 +X Q 2 7 R 49 X Y 2 S 1 +X Q 2 7 R 49 X Z 2 S 2 +X Q 2 9 R 81 X Y 2 S 1 +X Q 2 9 R 81 X Z 2 S 2 +X Q 3 1 R 1 X Y 2 S 1 +X Q 3 1 R 1 X Z 2 S 2 +X Q 3 2 R 4 X Y 2 S 1 +X Q 3 2 R 4 X Z 2 S 2 +X Q 3 3 R 9 X Y 2 S 1 +X Q 3 3 R 9 X Z 2 S 2 +X Q 3 5 R 25 X Y 2 S 1 +X Q 3 5 R 25 X Z 2 S 2 +X Q 3 6 R 36 X Y 2 S 1 +X Q 3 6 R 36 X Z 2 S 2 +X Q 3 7 R 49 X Y 2 S 1 +X Q 3 7 R 49 X Z 2 S 2 +X Q 3 9 R 81 X Y 2 S 1 +X Q 3 9 R 81 X Z 2 S 2 +X Q 5 1 R 1 X Y 2 S 1 +X Q 5 1 R 1 X Z 2 S 2 +X Q 5 2 R 4 X Y 2 S 1 +X Q 5 2 R 4 X Z 2 S 2 +X Q 5 3 R 9 X Y 2 S 1 +X Q 5 3 R 9 X Z 2 S 2 +X Q 5 5 R 25 X Y 2 S 1 +X Q 5 5 R 25 X Z 2 S 2 +X Q 5 6 R 36 X Y 2 S 1 +X Q 5 6 R 36 X Z 2 S 2 +X Q 5 7 R 49 X Y 2 S 1 +X Q 5 7 R 49 X Z 2 S 2 +X Q 5 9 R 81 X Y 2 S 1 +X Q 5 9 R 81 X Z 2 S 2 +SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY'; +CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'TokuDB' ; +INSERT INTO t4 SET C1 = 1; +SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1; +C1 HEX(B1) HEX(B2) +1 NULL 0 +include/sync_slave_sql_with_master.inc +SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1; +C1 HEX(B1) HEX(B2) +1 NULL 0 +SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; +CREATE TABLE t7 (C1 INT PRIMARY KEY, C2 INT) ENGINE = 'TokuDB' ; +include/sync_slave_sql_with_master.inc +--- on slave: original values --- +INSERT INTO t7 VALUES (1,3), (2,6), (3,9); +SELECT * FROM t7 ORDER BY C1; +C1 C2 +1 3 +2 6 +3 9 +set @@global.slave_exec_mode= 'IDEMPOTENT'; +--- on master: new values inserted --- +INSERT INTO t7 VALUES (1,2), (2,4), (3,6); +SELECT * FROM t7 ORDER BY C1; +C1 C2 +1 2 +2 4 +3 6 +include/sync_slave_sql_with_master.inc +set @@global.slave_exec_mode= default; +--- on slave: old values should be overwritten by replicated values --- +SELECT * FROM t7 ORDER BY C1; +C1 C2 +1 2 +2 4 +3 6 +--- on master --- +CREATE TABLE t8 (a INT PRIMARY KEY, b INT UNIQUE, c INT UNIQUE) ENGINE = 'TokuDB' ; +INSERT INTO t8 VALUES (99,99,99); +INSERT INTO t8 VALUES (99,22,33); +ERROR 23000: Duplicate entry '99' for key 'PRIMARY' +INSERT INTO t8 VALUES (11,99,33); +ERROR 23000: Duplicate entry '99' for key 'b' +INSERT INTO t8 VALUES (11,22,99); +ERROR 23000: Duplicate entry '99' for key 'c' +SELECT * FROM t8 ORDER BY a; +a b c +99 99 99 +include/sync_slave_sql_with_master.inc +--- on slave --- +SELECT * FROM t8 ORDER BY a; +a b c +99 99 99 +INSERT INTO t8 VALUES (1,2,3), (2,4,6), (3,6,9); +SELECT * FROM t8 ORDER BY a; +a b c +1 2 3 +2 4 6 +3 6 9 +99 99 99 +set @@global.slave_exec_mode= 'IDEMPOTENT'; +--- on master --- +INSERT INTO t8 VALUES (2,4,8); +include/sync_slave_sql_with_master.inc +set @@global.slave_exec_mode= default; +--- on slave --- +SELECT * FROM t8 ORDER BY a; +a b c +1 2 3 +2 4 8 +3 6 9 +99 99 99 +**** Test for BUG#31552 **** +**** On Master **** +DELETE FROM t1; +include/sync_slave_sql_with_master.inc +include/rpl_reset.inc +**** On Master **** +INSERT INTO t1 VALUES ('K','K'), ('L','L'), ('M','M'); +**** On Master **** +include/sync_slave_sql_with_master.inc +set @@global.slave_exec_mode= 'IDEMPOTENT'; +DELETE FROM t1 WHERE C1 = 'L'; +DELETE FROM t1; +SELECT COUNT(*) FROM t1 ORDER BY c1,c2; +COUNT(*) 0 +include/sync_slave_sql_with_master.inc +set @@global.slave_exec_mode= default; +include/check_slave_is_running.inc +SELECT COUNT(*) FROM t1 ORDER BY c1,c2; +COUNT(*) 0 +**** Test for BUG#37076 **** +**** On Master **** +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a TIMESTAMP, b DATETIME, c DATE); +INSERT INTO t1 VALUES( +'2005-11-14 01:01:01', '2005-11-14 01:01:02', '2005-11-14'); +**** On Slave **** +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +a b c +2005-11-14 01:01:01 2005-11-14 01:01:02 2005-11-14 +DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; +include/sync_slave_sql_with_master.inc +CREATE TABLE t1 (i INT NOT NULL, +c CHAR(16) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +CREATE TABLE t2 (i INT NOT NULL, +c CHAR(16) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +include/sync_slave_sql_with_master.inc +ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t3 (i INT NOT NULL, +c CHAR(128) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +include/sync_slave_sql_with_master.inc +ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t4 (i INT NOT NULL, +c CHAR(128) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +CREATE TABLE t5 (i INT NOT NULL, +c CHAR(255) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +include/sync_slave_sql_with_master.inc +ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t6 (i INT NOT NULL, +c CHAR(255) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +include/sync_slave_sql_with_master.inc +ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t7 (i INT NOT NULL, +c CHAR(255) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'TokuDB' ; +SET @saved_slave_type_conversions = @@slave_type_conversions; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY'; +[expecting slave to replicate correctly] +INSERT INTO t1 VALUES (1, "", 1); +INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +[expecting slave to replicate correctly] +INSERT INTO t2 VALUES (1, "", 1); +INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2); +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t2, slave:t2] +SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; +call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535"); +call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.* Error_code: 1032"); +call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t.. cannot be converted from type.*, Error_code: 1677"); +call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); +include/rpl_reset.inc +[expecting slave to replicate correctly] +INSERT INTO t4 VALUES (1, "", 1); +INSERT INTO t4 VALUES (2, repeat(_utf8'a', 128), 2); +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t4, slave:t4] +[expecting slave to stop] +INSERT INTO t5 VALUES (1, "", 1); +INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); +include/wait_for_slave_sql_error.inc [errno=1677] +include/rpl_reset.inc +[expecting slave to stop] +INSERT INTO t6 VALUES (1, "", 1); +INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); +include/wait_for_slave_sql_error.inc [errno=1677] +include/rpl_reset.inc +[expecting slave to replicate correctly] +INSERT INTO t7 VALUES (1, "", 1); +INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t7, slave:t7] +drop table t1, t2, t3, t4, t5, t6, t7; +include/sync_slave_sql_with_master.inc +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='TokuDB'; +INSERT INTO t1 VALUES (1), (2), (3); +UPDATE t1 SET a = 10; +ERROR 23000: Duplicate entry '10' for key 'PRIMARY' +INSERT INTO t1 VALUES (4); +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +drop table t1; +include/sync_slave_sql_with_master.inc +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 ( +`pk` int(11) NOT NULL AUTO_INCREMENT, +`int_nokey` int(11) NOT NULL, +`int_key` int(11) NOT NULL, +`date_key` date NOT NULL, +`date_nokey` date NOT NULL, +`time_key` time NOT NULL, +`time_nokey` time NOT NULL, +`datetime_key` datetime NOT NULL, +`datetime_nokey` datetime NOT NULL, +`varchar_key` varchar(1) NOT NULL, +`varchar_nokey` varchar(1) NOT NULL, +PRIMARY KEY (`pk`), +KEY `int_key` (`int_key`), +KEY `date_key` (`date_key`), +KEY `time_key` (`time_key`), +KEY `datetime_key` (`datetime_key`), +KEY `varchar_key` (`varchar_key`) +) ENGINE='TokuDB'; +INSERT INTO t1 VALUES (1,8,5,'0000-00-00','0000-00-00','10:37:38','10:37:38','0000-00-00 00:00:00','0000-00-00 00:00:00','p','p'),(2,0,9,'0000-00-00','0000-00-00','00:00:00','00:00:00','2007-10-14 00:00:00','2007-10-14 00:00:00','d','d'); +CREATE TABLE t2 ( +`pk` int(11) NOT NULL AUTO_INCREMENT, +`int_nokey` int(11) NOT NULL, +`int_key` int(11) NOT NULL, +`date_key` date NOT NULL, +`date_nokey` date NOT NULL, +`time_key` time NOT NULL, +`time_nokey` time NOT NULL, +`datetime_key` datetime NOT NULL, +`datetime_nokey` datetime NOT NULL, +`varchar_key` varchar(1) NOT NULL, +`varchar_nokey` varchar(1) NOT NULL, +PRIMARY KEY (`pk`), +KEY `int_key` (`int_key`), +KEY `date_key` (`date_key`), +KEY `time_key` (`time_key`), +KEY `datetime_key` (`datetime_key`), +KEY `varchar_key` (`varchar_key`) +) ENGINE='TokuDB'; +INSERT INTO t2 VALUES (1,1,6,'2005-12-23','2005-12-23','02:24:28','02:24:28','0000-00-00 00:00:00','0000-00-00 00:00:00','g','g'),(2,0,3,'2009-09-14','2009-09-14','00:00:00','00:00:00','2000-01-30 16:39:40','2000-01-30 16:39:40','q','q'),(3,0,3,'0000-00-00','0000-00-00','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','c','c'),(4,1,6,'2007-03-29','2007-03-29','15:49:00','15:49:00','0000-00-00 00:00:00','0000-00-00 00:00:00','m','m'),(5,4,0,'2002-12-04','2002-12-04','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),(6,9,0,'2005-01-28','2005-01-28','00:00:00','00:00:00','2001-05-18 00:00:00','2001-05-18 00:00:00','w','w'),(7,6,0,'0000-00-00','0000-00-00','06:57:25','06:57:25','0000-00-00 00:00:00','0000-00-00 00:00:00','m','m'),(8,0,0,'0000-00-00','0000-00-00','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','z','z'),(9,4,6,'2006-08-15','2006-08-15','00:00:00','00:00:00','2002-04-12 14:44:25','2002-04-12 14:44:25','j','j'),(10,0,5,'2006-12-20','2006-12-20','10:13:53','10:13:53','2008-07-22 00:00:00','2008-07-22 00:00:00','y','y'),(11,9,7,'0000-00-00','0000-00-00','00:00:00','00:00:00','2004-07-05 00:00:00','2004-07-05 00:00:00','{','{'),(12,4,3,'2007-01-26','2007-01-26','23:00:51','23:00:51','2001-05-16 00:00:00','2001-05-16 00:00:00','f','f'),(13,7,0,'2004-03-27','2004-03-27','00:00:00','00:00:00','2005-01-24 03:30:37','2005-01-24 03:30:37','',''),(14,6,0,'2006-07-26','2006-07-26','18:43:57','18:43:57','0000-00-00 00:00:00','0000-00-00 00:00:00','{','{'),(15,0,6,'2000-01-14','2000-01-14','00:00:00','00:00:00','2000-09-21 00:00:00','2000-09-21 00:00:00','o','o'),(16,9,8,'0000-00-00','0000-00-00','21:15:08','21:15:08','0000-00-00 00:00:00','0000-00-00 00:00:00','a','a'),(17,2,0,'2004-10-27','2004-10-27','00:00:00','00:00:00','2004-03-24 22:13:43','2004-03-24 22:13:43','',''),(18,7,4,'0000-00-00','0000-00-00','08:38:27','08:38:27','2002-03-18 19:51:44','2002-03-18 19:51:44','t','t'),(19,5,3,'2008-03-07','2008-03-07','03:29:07','03:29:07','2007-12-01 18:44:44','2007-12-01 18:44:44','t','t'),(20,0,0,'2002-04-09','2002-04-09','16:06:03','16:06:03','2009-04-22 00:00:00','2009-04-22 00:00:00','n','n'); +DELETE FROM t2 WHERE `int_key` < 3 LIMIT 1; +UPDATE t1 SET `int_key` = 3 ORDER BY `pk` LIMIT 4; +DELETE FROM t2 WHERE `int_key` < 3 LIMIT 1; +DELETE FROM t2 WHERE `pk` < 6 LIMIT 1; +UPDATE t1 SET `int_key` = 6 ORDER BY `pk` LIMIT 3; +DELETE FROM t2 WHERE `pk` < 6 LIMIT 1; +UPDATE t1 SET `pk` = 6 ORDER BY `int_key` LIMIT 6; +ERROR 23000: Duplicate entry '6' for key 'PRIMARY' +DELETE FROM t2 WHERE `pk` < 7 LIMIT 1; +UPDATE t1 SET `int_key` = 4 ORDER BY `pk` LIMIT 6; +include/sync_slave_sql_with_master.inc +*** results: t2 must be consistent **** +include/diff_tables.inc [master:t2, slave:t2] +DROP TABLE t1, t2; +EOF OF TESTS +CREATE TABLE t1 (a int) ENGINE='TokuDB'; +INSERT IGNORE INTO t1 VALUES (NULL); +INSERT INTO t1 ( a ) VALUES ( 0 ); +INSERT INTO t1 ( a ) VALUES ( 9 ); +INSERT INTO t1 ( a ) VALUES ( 2 ); +INSERT INTO t1 ( a ) VALUES ( 9 ); +INSERT INTO t1 ( a ) VALUES ( 5 ); +UPDATE t1 SET a = 5 WHERE a = 9; +DELETE FROM t1 WHERE a < 6; +UPDATE t1 SET a = 9 WHERE a < 3; +INSERT INTO t1 ( a ) VALUES ( 3 ); +UPDATE t1 SET a = 0 WHERE a < 4; +UPDATE t1 SET a = 8 WHERE a < 5; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +drop table t1; +include/sync_slave_sql_with_master.inc +SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY'; +CREATE TABLE t1 (a bit) ENGINE='TokuDB'; +INSERT IGNORE INTO t1 VALUES (NULL); +INSERT INTO t1 ( a ) VALUES ( 0 ); +UPDATE t1 SET a = 0 WHERE a = 1 LIMIT 3; +INSERT INTO t1 ( a ) VALUES ( 5 ); +DELETE FROM t1 WHERE a < 2 LIMIT 4; +DELETE FROM t1 WHERE a < 9 LIMIT 4; +INSERT INTO t1 ( a ) VALUES ( 9 ); +UPDATE t1 SET a = 8 WHERE a = 0 LIMIT 6; +INSERT INTO t1 ( a ) VALUES ( 8 ); +UPDATE t1 SET a = 0 WHERE a < 6 LIMIT 0; +INSERT INTO t1 ( a ) VALUES ( 4 ); +INSERT INTO t1 ( a ) VALUES ( 3 ); +UPDATE t1 SET a = 0 WHERE a = 7 LIMIT 6; +DELETE FROM t1 WHERE a = 4 LIMIT 7; +UPDATE t1 SET a = 9 WHERE a < 2 LIMIT 9; +UPDATE t1 SET a = 0 WHERE a < 9 LIMIT 2; +DELETE FROM t1 WHERE a < 0 LIMIT 5; +INSERT INTO t1 ( a ) VALUES ( 5 ); +UPDATE t1 SET a = 4 WHERE a < 6 LIMIT 4; +INSERT INTO t1 ( a ) VALUES ( 5 ); +UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 8; +DELETE FROM t1 WHERE a < 8 LIMIT 8; +INSERT INTO t1 ( a ) VALUES ( 6 ); +DELETE FROM t1 WHERE a < 6 LIMIT 7; +UPDATE t1 SET a = 7 WHERE a = 3 LIMIT 7; +UPDATE t1 SET a = 8 WHERE a = 0 LIMIT 6; +INSERT INTO t1 ( a ) VALUES ( 7 ); +DELETE FROM t1 WHERE a < 9 LIMIT 4; +INSERT INTO t1 ( a ) VALUES ( 7 ); +INSERT INTO t1 ( a ) VALUES ( 6 ); +UPDATE t1 SET a = 8 WHERE a = 3 LIMIT 4; +DELETE FROM t1 WHERE a = 2 LIMIT 9; +DELETE FROM t1 WHERE a = 1 LIMIT 4; +UPDATE t1 SET a = 4 WHERE a = 2 LIMIT 7; +INSERT INTO t1 ( a ) VALUES ( 0 ); +DELETE FROM t1 WHERE a < 3 LIMIT 0; +UPDATE t1 SET a = 8 WHERE a = 5 LIMIT 2; +INSERT INTO t1 ( a ) VALUES ( 1 ); +UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 3; +include/sync_slave_sql_with_master.inc +SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; +include/diff_tables.inc [master:t1, slave:t1] +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_blob_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_blob_tokudb.result new file mode 100644 index 00000000000..0741a616eda --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_blob_tokudb.result @@ -0,0 +1,161 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; +***** Table Create Section **** + +CREATE TABLE test.t1 (c1 int not null auto_increment, +data LONGBLOB, PRIMARY KEY(c1))ENGINE=#; + +**** Data Insert Section test.t1 ***** + +INSERT INTO test.t1 VALUES (NULL, NULL); +INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024)); +INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024)); + +**** Data Insert Validation Master Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +NULL +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +1024 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +LENGTH(data) +16384 +include/sync_slave_sql_with_master.inc + +**** Data Insert Validation Slave Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +NULL +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +1024 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +LENGTH(data) +16384 + +**** Data Update Section test.t1 **** + +UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1; +UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; + +**** Data Update Validation Master Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +18432 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +17408 +include/sync_slave_sql_with_master.inc + +**** Data Update Validation Slave Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +18432 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +17408 + +**** End Test Section test.t1 **** + +**** Create Table test.t2 **** + +CREATE TABLE test.t2 ( +c1 INT NOT NULL PRIMARY KEY, +c2 TEXT, +c3 INT, +c4 LONGBLOB, +KEY(c3))ENGINE=#; + +*** Setup Values For test.t2 *** +set @x0 = '01234567012345670123456701234567'; +set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0); +set @b1 = 'b1'; +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@x0); +set @d1 = 'dd1'; +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @b2 = 'b2'; +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @d2 = 'dd2'; +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); + +**** Data Insert Section test.t2 ***** + +INSERT INTO test.t2 VALUES(1,@b1,111,@d1); +INSERT INTO test.t2 VALUES(2,@b2,222,@d2); + +**** Data Insert Validation Master Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 2256 b1 3000 dd1 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 20000 b2 30000 dd2 +include/sync_slave_sql_with_master.inc + +**** Data Insert Validation Slave Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 2256 b1 3000 dd1 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 20000 b2 30000 dd2 + +**** Data Update Section test.t2 **** + +UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1; +UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2; + +**** Data Update Validation Master Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 20000 b2 30000 dd2 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 2256 b1 3000 dd1 +include/sync_slave_sql_with_master.inc + +**** Data Update Validation Slave Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 20000 b2 30000 dd2 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 2256 b1 3000 dd1 + +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_log_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_log_tokudb.result new file mode 100644 index 00000000000..87ffbca71bc --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_log_tokudb.result @@ -0,0 +1,275 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +include/sync_slave_sql_with_master.inc +include/stop_slave.inc +include/wait_for_slave_to_stop.inc +reset master; +reset slave; +start slave; +include/wait_for_slave_to_start.inc +create table t1(n int not null auto_increment primary key)ENGINE=TokuDB; +insert into t1 values (NULL); +drop table t1; +create table t1 (word char(20) not null)ENGINE=TokuDB; +load data infile 'LOAD_FILE' into table t1 ignore 1 lines; +select count(*) from t1; +count(*) +69 +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +flush logs; +create table t3 (a int)ENGINE=TokuDB; +select * from t1 order by 1 asc; +word +Aarhus +Aaron +Aaron +Ababa +Ababa +aback +aback +abaft +abaft +abandon +abandon +abandoned +abandoned +abandoning +abandoning +abandonment +abandonment +abandons +abandons +abase +abased +abasement +abasements +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abatements +abater +abates +abating +Abba +abbe +abbey +abbeys +abbot +abbots +Abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +Abby +abdomen +abdomens +abdominal +abduct +abducted +abduction +abductions +abductor +abductors +abducts +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberration +include/sync_slave_sql_with_master.inc +select * from t1 order by 1 asc; +word +Aarhus +Aaron +Aaron +Ababa +Ababa +aback +aback +abaft +abaft +abandon +abandon +abandoned +abandoned +abandoning +abandoning +abandonment +abandonment +abandons +abandons +abase +abased +abasement +abasements +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abatements +abater +abates +abating +Abba +abbe +abbey +abbeys +abbot +abbots +Abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +Abby +abdomen +abdomens +abdominal +abduct +abducted +abduction +abductions +abductor +abductors +abducts +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberration +flush logs; +include/stop_slave.inc +include/start_slave.inc +create table t2 (n int)ENGINE=TokuDB; +insert into t2 values (1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +master-bin.000002 # Query # # BEGIN +master-bin.000002 # Table_map # # table_id: # (test.t2) +master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000002 # Xid # # COMMIT /* XID */ +show binary logs; +Log_name File_size +master-bin.000001 # +master-bin.000002 # +include/sync_slave_sql_with_master.inc +show binary logs; +Log_name File_size +slave-bin.000001 # +slave-bin.000002 # +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Table_map # # table_id: # (test.t2) +slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000002 # Xid # # COMMIT /* XID */ +include/check_slave_is_running.inc +show binlog events in 'slave-bin.000005' from 4; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +include/rpl_reset.inc +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_rec_comp_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_rec_comp_tokudb.result new file mode 100644 index 00000000000..8dcea0daff7 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_rec_comp_tokudb.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +## case #1 - last_null_bit_pos==0 in record_compare without X bit +include/rpl_reset.inc +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=TokuDB DEFAULT CHARSET=latin1; +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +UPDATE t1 SET c5 = 'a'; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +include/sync_slave_sql_with_master.inc +## case #1.1 - last_null_bit_pos==0 in record_compare with X bit +## (1 column less and no varchar) +include/rpl_reset.inc +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=TokuDB DEFAULT CHARSET=latin1; +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +UPDATE t1 SET c5 = 'a'; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +include/sync_slave_sql_with_master.inc +## case #2 - X bit is wrongly set. +include/rpl_reset.inc +CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=TokuDB DEFAULT CHARSET= latin1; +INSERT INTO t1(c1) VALUES (10); +INSERT INTO t1(c1) VALUES (NULL); +UPDATE t1 SET c1= 0; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_sp002_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_sp002_tokudb.result new file mode 100644 index 00000000000..65fecef606b --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_sp002_tokudb.result @@ -0,0 +1,233 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE test.t1 (a INT AUTO_INCREMENT KEY, t CHAR(6)) ENGINE=TokuDB; +CREATE TABLE test.t2 (a INT AUTO_INCREMENT KEY, f INT, FOREIGN KEY(a) REFERENCES test.t1(a) ON DELETE CASCADE) ENGINE=TokuDB; +create procedure test.p1(IN i CHAR(6)) +begin +INSERT INTO test.t1 (t) VALUES (i); +INSERT INTO test.t2 VALUES (NULL,LAST_INSERT_ID()); +end| +create procedure test.p2(IN i INT) +begin +DELETE FROM test.t1 where a < i; +end| + +< -- test 1 call p1 -- > +------------------------ +SET FOREIGN_KEY_CHECKS=1; +call test.p1('texas'); +call test.p1('Live'); +call test.p1('next'); +call test.p1('to'); +call test.p1('OK'); +call test.p1('MySQL'); + +< -- test 1 select master after p1 -- > +--------------------------------------- +SELECT * FROM test.t1; +a t +1 texas +2 Live +3 next +4 to +5 OK +6 MySQL +SELECT * FROM test.t2; +a f +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 + +< -- test 1 select slave after p1 -- > +-------------------------------------- +SELECT * FROM test.t1; +a t +1 texas +2 Live +3 next +4 to +5 OK +6 MySQL +SELECT * FROM test.t2; +a f +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 + +< -- test 1 call p2 & select master -- > +---------------------------------------- +call test.p2(4); +SELECT * FROM test.t1; +a t +4 to +5 OK +6 MySQL +SELECT * FROM test.t2; +a f +4 4 +5 5 +6 6 + +< -- test 1 select slave after p2 -- > +-------------------------------------- +SELECT * FROM test.t1; +a t +4 to +5 OK +6 MySQL +SELECT * FROM test.t2; +a f +4 4 +5 5 +6 6 + +< -- End test 1 Begin test 2 -- > +--------------------------------- +SET FOREIGN_KEY_CHECKS=0; +DROP PROCEDURE IF EXISTS test.p1; +DROP PROCEDURE IF EXISTS test.p2; +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; +CREATE TABLE test.t1 (a INT, t CHAR(6), PRIMARY KEY(a)) ENGINE=TokuDB; +CREATE TABLE test.t2 (a INT, f INT, FOREIGN KEY(a) REFERENCES test.t1(a) ON UPDATE CASCADE, PRIMARY KEY(a)) ENGINE=TokuDB; +CREATE PROCEDURE test.p1(IN nm INT, IN ch CHAR(6)) +BEGIN +INSERT INTO test.t1 (a,t) VALUES (nm, ch); +INSERT INTO test.t2 VALUES (nm, LAST_INSERT_ID()); +END| +CREATE PROCEDURE test.p2(IN i INT) +BEGIN +UPDATE test.t1 SET a = i*10 WHERE a = i; +END| +SET FOREIGN_KEY_CHECKS=1; +CALL test.p1(1,'texas'); +CALL test.p1(2,'Live'); +CALL test.p1(3,'next'); +CALL test.p1(4,'to'); +CALL test.p1(5,'OK'); +CALL test.p1(6,'MySQL'); + +< -- test 2 select Master after p1 -- > +--------------------------------------- +SELECT * FROM test.t1; +a t +1 texas +2 Live +3 next +4 to +5 OK +6 MySQL +SELECT * FROM test.t2; +a f +1 6 +2 6 +3 6 +4 6 +5 6 +6 6 + +< -- test 2 select Slave after p1 -- > +-------------------------------------- +SELECT * FROM test.t1; +a t +1 texas +2 Live +3 next +4 to +5 OK +6 MySQL +SELECT * FROM test.t2; +a f +1 6 +2 6 +3 6 +4 6 +5 6 +6 6 + +< -- test 2 call p2 & select Master -- > +---------------------------------------- +CALL test.p2(2); +CALL test.p2(4); +CALL test.p2(6); +SELECT * FROM test.t1; +a t +1 texas +3 next +5 OK +20 Live +40 to +60 MySQL +SELECT * FROM test.t2; +a f +1 6 +3 6 +5 6 +20 6 +40 6 +60 6 + +< -- test 1 select Slave after p2 -- > +-------------------------------------- +SELECT * FROM test.t1; +a t +1 texas +3 next +5 OK +20 Live +40 to +60 MySQL +SELECT * FROM test.t2; +a f +1 6 +3 6 +5 6 +20 6 +40 6 +60 6 + +< -- End test 2 Begin test 3 -- > +--------------------------------- +CREATE TABLE test.t3 (a INT AUTO_INCREMENT KEY, t CHAR(6))ENGINE=TokuDB; +CREATE PROCEDURE test.p3(IN n INT) +begin +CASE n +WHEN 2 THEN +DELETE from test.t3; +ELSE +INSERT INTO test.t3 VALUES (NULL,'NONE'); +END CASE; +end| +SET AUTOCOMMIT=0; +START TRANSACTION; +ROLLBACK; +select * from test.t3; +a t +select * from test.t3; +a t +START TRANSACTION; +COMMIT; +select * from test.t3; +a t +98 NONE +select * from test.t3; +a t +98 NONE +SET AUTOCOMMIT=1; +SET FOREIGN_KEY_CHECKS=0; +DROP PROCEDURE test.p3; +DROP PROCEDURE test.p1; +DROP PROCEDURE test.p2; +DROP TABLE test.t1; +DROP TABLE test.t2; +DROP TABLE test.t3; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_sp007_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_sp007_tokudb.result new file mode 100644 index 00000000000..b783e42bd7b --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_sp007_tokudb.result @@ -0,0 +1,48 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE PROCEDURE test.p1(IN i INT) +BEGIN +DECLARE CONTINUE HANDLER FOR sqlexception BEGIN END; +DROP TABLE IF EXISTS test.t1; +CREATE TABLE test.t1 (num INT,PRIMARY KEY(num))ENGINE=TokuDB; +START TRANSACTION; +INSERT INTO test.t1 VALUES(i); +savepoint t1_save; +INSERT INTO test.t1 VALUES (14); +ROLLBACK to savepoint t1_save; +COMMIT; +END| + +< ---- Master selects-- > +------------------------- +CALL test.p1(12); +SELECT * FROM test.t1; +num +12 + +< ---- Slave selects-- > +------------------------ +include/sync_slave_sql_with_master.inc +SELECT * FROM test.t1; +num +12 + +< ---- Master selects-- > +------------------------- +CALL test.p1(13); +SELECT * FROM test.t1; +num +13 + +< ---- Slave selects-- > +------------------------ +include/sync_slave_sql_with_master.inc +SELECT * FROM test.t1; +num +13 +DROP PROCEDURE test.p1; +DROP TABLE test.t1; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_row_tabledefs_3tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_row_tabledefs_3tokudb.result new file mode 100644 index 00000000000..13e80030937 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_row_tabledefs_3tokudb.result @@ -0,0 +1,190 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +STOP SLAVE; +SET @my_sql_mode= @@global.sql_mode; +SET GLOBAL SQL_MODE='STRICT_ALL_TABLES'; +START SLAVE; +CREATE TABLE t1_int (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +CREATE TABLE t1_bit (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +CREATE TABLE t1_char (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +CREATE TABLE t1_nodef (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; +CREATE TABLE t4 (a INT) ENGINE=TokuDB; +CREATE TABLE t5 (a INT, b INT, c INT) ENGINE=TokuDB; +CREATE TABLE t6 (a INT, b INT, c INT) ENGINE=TokuDB; +CREATE TABLE t7 (a INT NOT NULL) ENGINE=TokuDB; +CREATE TABLE t8 (a INT NOT NULL) ENGINE=TokuDB; +CREATE TABLE t9 (a INT) ENGINE=TokuDB; +ALTER TABLE t1_int ADD x INT DEFAULT 42; +ALTER TABLE t1_bit +ADD x BIT(3) DEFAULT b'011', +ADD y BIT(5) DEFAULT b'10101', +ADD z BIT(2) DEFAULT b'10'; +ALTER TABLE t1_char ADD x CHAR(20) DEFAULT 'Just a test'; +ALTER TABLE t1_nodef ADD x INT NOT NULL, ADD y INT NOT NULL, ADD z INT NOT NULL; +ALTER TABLE t2 DROP b; +ALTER TABLE t4 MODIFY a FLOAT; +ALTER TABLE t5 MODIFY b FLOAT; +ALTER TABLE t6 MODIFY c FLOAT; +ALTER TABLE t7 ADD e1 INT, ADD e2 INT, ADD e3 INT, ADD e4 INT, +ADD e5 INT, ADD e6 INT, ADD e7 INT, ADD e8 INT; +ALTER TABLE t8 ADD e1 INT NOT NULL DEFAULT 0, ADD e2 INT NOT NULL DEFAULT 0, +ADD e3 INT NOT NULL DEFAULT 0, ADD e4 INT NOT NULL DEFAULT 0, +ADD e5 INT NOT NULL DEFAULT 0, ADD e6 INT NOT NULL DEFAULT 0, +ADD e7 INT NOT NULL DEFAULT 0, ADD e8 INT NOT NULL DEFAULT 0; +set @@global.slave_exec_mode= 'IDEMPOTENT'; +INSERT INTO t1_int VALUES (2, 4, 4711); +INSERT INTO t1_char VALUES (2, 4, 'Foo is a bar'); +INSERT INTO t1_bit VALUES (2, 4, b'101', b'11100', b'01'); +**** On Master **** +INSERT INTO t1_int VALUES (1,2); +INSERT INTO t1_int VALUES (2,5); +INSERT INTO t1_bit VALUES (1,2); +INSERT INTO t1_bit VALUES (2,5); +INSERT INTO t1_char VALUES (1,2); +INSERT INTO t1_char VALUES (2,5); +SELECT * FROM t1_int ORDER BY a; +a b +1 2 +2 5 +SELECT * FROM t1_bit ORDER BY a; +a b +1 2 +2 5 +SELECT * FROM t1_char ORDER BY a; +a b +1 2 +2 5 +**** On Slave **** +set @@global.slave_exec_mode= default; +SELECT a,b,x FROM t1_int ORDER BY a; +a b x +1 2 42 +2 5 4711 +SELECT a,b,HEX(x),HEX(y),HEX(z) FROM t1_bit ORDER BY a; +a b HEX(x) HEX(y) HEX(z) +1 2 3 15 2 +2 5 5 1C 1 +SELECT a,b,x FROM t1_char ORDER BY a; +a b x +1 2 Just a test +2 5 Foo is a bar +**** On Master **** +UPDATE t1_int SET b=2*b WHERE a=2; +UPDATE t1_char SET b=2*b WHERE a=2; +UPDATE t1_bit SET b=2*b WHERE a=2; +SELECT * FROM t1_int ORDER BY a; +a b +1 2 +2 10 +SELECT * FROM t1_bit ORDER BY a; +a b +1 2 +2 10 +SELECT * FROM t1_char ORDER BY a; +a b +1 2 +2 10 +**** On Slave **** +SELECT a,b,x FROM t1_int ORDER BY a; +a b x +1 2 42 +2 10 4711 +SELECT a,b,HEX(x),HEX(y),HEX(z) FROM t1_bit ORDER BY a; +a b HEX(x) HEX(y) HEX(z) +1 2 3 15 2 +2 10 5 1C 1 +SELECT a,b,x FROM t1_char ORDER BY a; +a b x +1 2 Just a test +2 10 Foo is a bar +INSERT INTO t9 VALUES (2); +INSERT INTO t1_nodef VALUES (1,2); +select count(*) from t1_nodef; +count(*) +1 +INSERT INTO t9 VALUES (2); +**** On Master **** +INSERT INTO t2 VALUES (2,4); +SELECT * FROM t2; +a b +2 4 +**** On Slave **** +SELECT * FROM t2; +a +2 +include/check_slave_is_running.inc +INSERT INTO t9 VALUES (4); +INSERT INTO t4 VALUES (4); +call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column [012] type mismatch.* Error_code: 1535"); +call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]. cannot be converted from type.* Error_code: 1677"); +call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +INSERT INTO t9 VALUES (5); +INSERT INTO t5 VALUES (5,10,25); +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +INSERT INTO t9 VALUES (6); +INSERT INTO t6 VALUES (6,12,36); +include/wait_for_slave_sql_error_and_skip.inc [errno=1677] +INSERT INTO t9 VALUES (6); +include/check_slave_is_running.inc +INSERT INTO t7 VALUES (1),(2),(3); +INSERT INTO t8 VALUES (1),(2),(3); +SELECT * FROM t7 ORDER BY a; +a +1 +2 +3 +SELECT * FROM t8 ORDER BY a; +a +1 +2 +3 +SELECT * FROM t7 ORDER BY a; +a e1 e2 e3 e4 e5 e6 e7 e8 +1 NULL NULL NULL NULL NULL NULL NULL NULL +2 NULL NULL NULL NULL NULL NULL NULL NULL +3 NULL NULL NULL NULL NULL NULL NULL NULL +SELECT * FROM t8 ORDER BY a; +a e1 e2 e3 e4 e5 e6 e7 e8 +1 0 0 0 0 0 0 0 0 +2 0 0 0 0 0 0 0 0 +3 0 0 0 0 0 0 0 0 +**** On Master **** +TRUNCATE t1_nodef; +SET SQL_LOG_BIN=0; +INSERT INTO t1_nodef VALUES (1,2); +INSERT INTO t1_nodef VALUES (2,4); +SET SQL_LOG_BIN=1; +**** On Slave **** +INSERT INTO t1_nodef VALUES (1,2,3,4,5); +INSERT INTO t1_nodef VALUES (2,4,6,8,10); +**** On Master **** +UPDATE t1_nodef SET b=2*b WHERE a=1; +SELECT * FROM t1_nodef ORDER BY a; +a b +1 4 +2 4 +**** On Slave **** +SELECT * FROM t1_nodef ORDER BY a; +a b x y z +1 4 3 4 5 +2 4 6 8 10 +**** On Master **** +DELETE FROM t1_nodef WHERE a=2; +SELECT * FROM t1_nodef ORDER BY a; +a b +1 4 +**** On Slave **** +SELECT * FROM t1_nodef ORDER BY a; +a b x y z +1 4 3 4 5 +**** Cleanup **** +DROP TABLE IF EXISTS t1_int,t1_bit,t1_char,t1_nodef; +DROP TABLE IF EXISTS t2,t3,t4,t5,t6,t7,t8,t9; +SET @@global.sql_mode= @my_sql_mode; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_set_null_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_set_null_tokudb.result new file mode 100644 index 00000000000..d2bc4c148d5 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_set_null_tokudb.result @@ -0,0 +1,31 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +include/rpl_reset.inc +CREATE TABLE t1 (c1 BIT, c2 INT) Engine=TokuDB; +INSERT INTO `t1` VALUES ( 1, 1 ); +UPDATE t1 SET c1=NULL where c2=1; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DELETE FROM t1 WHERE c2=1 LIMIT 1; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +include/sync_slave_sql_with_master.inc +include/rpl_reset.inc +CREATE TABLE t1 (c1 CHAR) Engine=TokuDB; +INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ; +SELECT * FROM t1; +c1 +w +UPDATE t1 SET c1=NULL WHERE c1='w'; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DELETE FROM t1 LIMIT 2; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_stm_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_stm_tokudb.result new file mode 100644 index 00000000000..80d24bd31b2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_stm_tokudb.result @@ -0,0 +1,138 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE t4 ( +id INT(5) unsigned NOT NULL auto_increment, +name varchar(15) NOT NULL default '', +number varchar(35) NOT NULL default 'default', +PRIMARY KEY (id), +UNIQUE KEY unique_rec (name,number) +) ENGINE=TokuDB; +LOAD DATA +INFILE '../../std_data/loaddata_pair.dat' +REPLACE INTO TABLE t4 +(name,number); +SELECT * FROM t4; +id name number +1 XXX 12345 +2 XXY 12345 +SELECT * FROM t4; +id name number +1 XXX 12345 +2 XXY 12345 +LOAD DATA +INFILE '../../std_data/loaddata_pair.dat' +REPLACE INTO TABLE t4 +(name,number); +SELECT * FROM t4; +id name number +4 XXX 12345 +5 XXY 12345 +SELECT * FROM t4; +id name number +4 XXX 12345 +5 XXY 12345 +FLUSH LOGS; +FLUSH LOGS; +DROP DATABASE IF EXISTS mysqltest1; +CREATE DATABASE mysqltest1; +CREATE TEMPORARY TABLE mysqltest1.tmp (f1 BIGINT) ENGINE=InnoDB; +CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="TokuDB"; +SET AUTOCOMMIT = 0; +-------- switch to slave -------- +ALTER TABLE mysqltest1.t1 ENGINE = MyISAM; +SHOW CREATE TABLE mysqltest1.t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` bigint(20) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +-------- switch to master -------- +INSERT INTO mysqltest1.t1 SET f1= 1; +DROP TEMPORARY TABLE mysqltest1.tmp; +ROLLBACK; +Warnings: +Warning # Some temporary tables were dropped, but these operations could not be rolled back. +SHOW CREATE TABLE mysqltest1.tmp; +ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist +######### Must return no rows here ######### +SELECT COUNT(*) FROM mysqltest1.t1; +COUNT(*) +0 +INSERT INTO mysqltest1.t1 SET f1= 2; +CREATE TEMPORARY TABLE mysqltest1.tmp2(a INT) ENGINE=InnoDB; +ROLLBACK; +Warnings: +Warning # The creation of some temporary tables could not be rolled back. +SHOW CREATE TABLE mysqltest1.tmp2; +Table Create Table +tmp2 CREATE TEMPORARY TABLE `tmp2` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +######### Must return no rows here ######### +SELECT COUNT(*) FROM mysqltest1.t1; +COUNT(*) +0 +-------- switch to slave -------- +SHOW CREATE TABLE mysqltest1.tmp; +ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist +SHOW CREATE TABLE mysqltest1.tmp2; +ERROR 42S02: Table 'mysqltest1.tmp2' doesn't exist +######### for SBR, t1 has two rows here: the transaction not rolled back since t1 uses MyISAM ######### +######### for MBR, t1 has one row here: the transaction not rolled back since t1 uses MyISAM ######### +SELECT COUNT(*) FROM mysqltest1.t1; +COUNT(*) +2 +FLUSH LOGS; +-------- switch to master -------- +FLUSH LOGS; +DROP TEMPORARY TABLE IF EXISTS mysqltest1.tmp2; +DROP DATABASE mysqltest1; +End of 5.1 tests +# +# Bug#39675 rename tables on innodb tables with pending +# transactions causes slave data issue. +# +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +CREATE TABLE t1 ( +id INT PRIMARY KEY auto_increment, +b INT DEFAULT NULL +) ENGINE=TokuDB; +CREATE TABLE t2 ( +id INT PRIMARY KEY auto_increment, +b INT DEFAULT NULL +) ENGINE=TokuDB; +INSERT INTO t1 (b) VALUES (1),(2),(3); +BEGIN; +INSERT INTO t1(b) VALUES (4); +-------- switch to master1 -------- +RENAME TABLE t1 TO t3, t2 TO t1;; +-------- switch to master -------- +COMMIT; +-------- switch to master1 -------- +-------- switch to master -------- +SELECT * FROM t1; +id b +SELECT * FROM t3; +id b +1 1 +2 2 +3 3 +4 4 +-------- switch to slave -------- +SELECT * FROM t1; +id b +SELECT * FROM t3; +id b +1 1 +2 2 +3 3 +4 4 +-------- switch to master -------- +DROP TABLE t1; +DROP TABLE t3; +End of 6.0 tests +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug28430.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug28430.result new file mode 100644 index 00000000000..009c020b496 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug28430.result @@ -0,0 +1,145 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +use test; +CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON +UPDATE CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, +fkid MEDIUMINT, filler VARCHAR(255), +PRIMARY KEY(id)) ENGINE=TokuDB; +CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, +fkid MEDIUMINT, filler VARCHAR(255), +PRIMARY KEY(id)) ENGINE=TokuDB +PARTITION BY KEY(id) partitions 5; +CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, +fkid MEDIUMINT, filler VARCHAR(255), +PRIMARY KEY(id)) ENGINE=TokuDB +PARTITION BY RANGE(id) +SUBPARTITION BY hash(id) subpartitions 2 +(PARTITION pa1 values less than (10), +PARTITION pa2 values less than (20), +PARTITION pa3 values less than (30), +PARTITION pa4 values less than (40), +PARTITION pa5 values less than (50), +PARTITION pa6 values less than (60), +PARTITION pa7 values less than (70), +PARTITION pa8 values less than (80), +PARTITION pa9 values less than (90), +PARTITION pa10 values less than (100), +PARTITION pa11 values less than MAXVALUE); +CREATE PROCEDURE test.proc_norm() +BEGIN +DECLARE ins_count INT DEFAULT 1000; +DECLARE del_count INT; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +DECLARE local_time TIMESTAMP; +SET local_time= NOW(); +SET cur_user= CURRENT_USER(); +SET local_uuid= UUID(); +WHILE ins_count > 0 DO +INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), +ins_count,'Going to test MBR for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +SELECT MAX(id) FROM test.regular_tbl INTO del_count; +WHILE del_count > 0 DO +DELETE FROM test.regular_tbl WHERE id = del_count; +SET del_count = del_count - 2; +END WHILE; +END| +CREATE PROCEDURE test.proc_bykey() +BEGIN +DECLARE ins_count INT DEFAULT 1000; +DECLARE del_count INT; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +DECLARE local_time TIMESTAMP; +SET local_time= NOW(); +SET cur_user= CURRENT_USER(); +SET local_uuid= UUID(); +WHILE ins_count > 0 DO +INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(), +ins_count,'Going to test MBR for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +SELECT MAX(id) FROM test.bykey_tbl INTO del_count; +WHILE del_count > 0 DO +DELETE FROM test.bykey_tbl WHERE id = del_count; +SET del_count = del_count - 2; +END WHILE; +END| +CREATE PROCEDURE test.proc_byrange() +BEGIN +DECLARE ins_count INT DEFAULT 1000; +DECLARE del_count INT; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +DECLARE local_time TIMESTAMP; +SET local_time= NOW(); +SET cur_user = CURRENT_USER(); +SET local_uuid=UUID(); +WHILE ins_count > 0 DO +INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(), +ins_count,'Going to test MBR for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +SELECT MAX(id) FROM test.byrange_tbl INTO del_count; +WHILE del_count > 0 DO +DELETE FROM test.byrange_tbl WHERE id = del_count; +SET del_count = del_count - 2; +END WHILE; +END| +CALL test.proc_norm(); +SELECT count(*) as "Master regular" FROM test.regular_tbl; +Master regular 500 +CALL test.proc_bykey(); +SELECT count(*) as "Master bykey" FROM test.bykey_tbl; +Master bykey 500 +CALL test.proc_byrange(); +SELECT count(*) as "Master byrange" FROM test.byrange_tbl; +Master byrange 500 +show create table test.byrange_tbl; +Table byrange_tbl +Create Table CREATE TABLE `byrange_tbl` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user` char(255) DEFAULT NULL, + `uuidf` longblob, + `fkid` mediumint(9) DEFAULT NULL, + `filler` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=TokuDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY RANGE (id) +SUBPARTITION BY HASH (id) +SUBPARTITIONS 2 +(PARTITION pa1 VALUES LESS THAN (10) ENGINE = TokuDB, + PARTITION pa2 VALUES LESS THAN (20) ENGINE = TokuDB, + PARTITION pa3 VALUES LESS THAN (30) ENGINE = TokuDB, + PARTITION pa4 VALUES LESS THAN (40) ENGINE = TokuDB, + PARTITION pa5 VALUES LESS THAN (50) ENGINE = TokuDB, + PARTITION pa6 VALUES LESS THAN (60) ENGINE = TokuDB, + PARTITION pa7 VALUES LESS THAN (70) ENGINE = TokuDB, + PARTITION pa8 VALUES LESS THAN (80) ENGINE = TokuDB, + PARTITION pa9 VALUES LESS THAN (90) ENGINE = TokuDB, + PARTITION pa10 VALUES LESS THAN (100) ENGINE = TokuDB, + PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = TokuDB) */ +SELECT count(*) "Slave norm" FROM test.regular_tbl; +Slave norm 500 +SELECT count(*) "Slave bykey" FROM test.bykey_tbl; +Slave bykey 500 +SELECT count(*) "Slave byrange" FROM test.byrange_tbl; +Slave byrange 500 +DROP PROCEDURE test.proc_norm; +DROP PROCEDURE test.proc_bykey; +DROP PROCEDURE test.proc_byrange; +DROP TABLE test.regular_tbl; +DROP TABLE test.bykey_tbl; +DROP TABLE test.byrange_tbl; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug30888.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug30888.result new file mode 100644 index 00000000000..bfcb5a92b68 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_bug30888.result @@ -0,0 +1,35 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +use test; +CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB, +fkid MEDIUMINT, filler VARCHAR(255), +PRIMARY KEY(id)) ENGINE=TokuDB; +CREATE PROCEDURE test.proc_norm() +BEGIN +DECLARE ins_count INT DEFAULT 1000; +DECLARE del_count INT; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +DECLARE local_time TIMESTAMP; +SET local_time= NOW(); +SET cur_user= CURRENT_USER(); +SET local_uuid= UUID(); +WHILE ins_count > 0 DO +INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), +ins_count,'Going to test MBR for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +SELECT MAX(id) FROM test.regular_tbl INTO del_count; +WHILE del_count > 0 DO +DELETE FROM test.regular_tbl WHERE id = del_count; +SET del_count = del_count - 2; +END WHILE; +END| +CALL test.proc_norm(); +DROP PROCEDURE test.proc_norm; +DROP TABLE test.regular_tbl; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_commit_after_flush.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_commit_after_flush.result new file mode 100644 index 00000000000..2aeef4204f5 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_commit_after_flush.result @@ -0,0 +1,15 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE t1 (a INT) ENGINE=tokudb; +begin; +insert into t1 values(1); +flush tables with read lock; +commit; +include/sync_slave_sql_with_master.inc +unlock tables; +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk.result new file mode 100644 index 00000000000..6fab29177d7 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk.result @@ -0,0 +1,27 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows OFF +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +include/diff_tables.inc [master:test.t, slave:test.t] +delete from t where a=2; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk_lookup1.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk_lookup1.result new file mode 100644 index 00000000000..f8efd5e04ee --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_delete_pk_lookup1.result @@ -0,0 +1,27 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks ON +tokudb_rpl_unique_checks_delay 0 +create table t (a bigint not null, primary key(a)) engine=tokudb; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +include/diff_tables.inc [master:test.t, slave:test.t] +delete from t where a=2; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart > 5; +@tend-@tstart > 5 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id.result new file mode 100644 index 00000000000..217520a59d4 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id.result @@ -0,0 +1,554 @@ +# +# Setup +# +# +# See if queries that use both auto_increment and LAST_INSERT_ID() +# are replicated well +# +# We also check how the foreign_key_check variable is replicated +# +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +SET @old_concurrent_insert= @@global.concurrent_insert; +SET @@global.concurrent_insert= 0; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b)) engine=tokudb; +insert into t1 values (1),(2),(3); +insert into t1 values (null); +insert into t2 values (null,last_insert_id()); +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +1 +2 +3 +4 +select * from t2 ORDER BY b; +b c +1 4 +drop table t1; +drop table t2; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=tokudb; +SET FOREIGN_KEY_CHECKS=0; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 values (null,last_insert_id()); +SET FOREIGN_KEY_CHECKS=1; +include/sync_slave_sql_with_master.inc +select * from t1; +a +10 +11 +12 +13 +select * from t2; +b c +5 0 +6 11 +# +# check if INSERT SELECT in auto_increment is well replicated (bug #490) +# +drop table t2; +drop table t1; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b)) engine=tokudb; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 (c) select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +10 +11 +12 +13 +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +drop table t1; +drop table t2; +include/sync_slave_sql_with_master.inc +# +# Bug#8412: Error codes reported in binary log for CHARACTER SET, +# FOREIGN_KEY_CHECKS +# +SET TIMESTAMP=1000000000; +CREATE TABLE t1 ( a INT UNIQUE ) engine=tokudb; +SET FOREIGN_KEY_CHECKS=0; +INSERT INTO t1 VALUES (1),(1); +Got one of the listed errors +include/sync_slave_sql_with_master.inc +drop table t1; +include/sync_slave_sql_with_master.inc +# +# Bug#14553: NULL in WHERE resets LAST_INSERT_ID +# +set @@session.sql_auto_is_null=1; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(a int) engine=tokudb; +insert into t1 (a) values (null); +insert into t2 (a) select a from t1 where a is null; +insert into t2 (a) select a from t1 where a is null; +select * from t2; +a +1 +include/sync_slave_sql_with_master.inc +select * from t2; +a +1 +drop table t1; +drop table t2; +# +# End of 4.1 tests +# +# +# BUG#15728: LAST_INSERT_ID function inside a stored function returns 0 +# +# The solution is not to reset last_insert_id on enter to sub-statement. +# +drop function if exists bug15728; +drop function if exists bug15728_insert; +drop table if exists t1, t2; +create table t1 ( +id int not null auto_increment, +last_id int, +primary key (id) +) engine=tokudb; +create function bug15728() returns int(11) +return last_insert_id(); +insert into t1 (last_id) values (0); +insert into t1 (last_id) values (last_insert_id()); +insert into t1 (last_id) values (bug15728()); +create table t2 ( +id int not null auto_increment, +last_id int, +primary key (id) +) engine=tokudb; +create function bug15728_insert() returns int(11) modifies sql data +begin +insert into t2 (last_id) values (bug15728()); +return bug15728(); +end| +create trigger t1_bi before insert on t1 for each row +begin +declare res int; +select bug15728_insert() into res; +set NEW.last_id = res; +end| +insert into t1 (last_id) values (0); +drop trigger t1_bi; +select last_insert_id(); +last_insert_id() +4 +select bug15728_insert(); +bug15728_insert() +2 +select last_insert_id(); +last_insert_id() +4 +insert into t1 (last_id) values (bug15728()); +select last_insert_id(); +last_insert_id() +5 +drop procedure if exists foo; +create procedure foo() +begin +declare res int; +insert into t2 (last_id) values (bug15728()); +insert into t1 (last_id) values (bug15728()); +end| +call foo(); +select * from t1; +id last_id +1 0 +2 1 +3 2 +4 1 +5 4 +6 3 +select * from t2; +id last_id +1 3 +2 4 +3 5 +include/sync_slave_sql_with_master.inc +select * from t1; +id last_id +1 0 +2 1 +3 2 +4 1 +5 4 +6 3 +select * from t2; +id last_id +1 3 +2 4 +3 5 +drop function bug15728; +drop function bug15728_insert; +drop table t1,t2; +drop procedure foo; +create table t1 (n int primary key auto_increment not null, +b int, unique(b)) engine=tokudb; +set sql_log_bin=0; +insert into t1 values(null,100); +replace into t1 values(null,50),(null,100),(null,150); +select * from t1 order by n; +n b +2 50 +3 100 +4 150 +truncate table t1; +set sql_log_bin=1; +insert into t1 values(null,100); +select * from t1 order by n; +n b +1 100 +include/sync_slave_sql_with_master.inc +insert into t1 values(null,200),(null,300); +delete from t1 where b <> 100; +select * from t1 order by n; +n b +1 100 +replace into t1 values(null,100),(null,350); +select * from t1 order by n; +n b +2 100 +3 350 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +2 100 +3 350 +insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000; +select * from t1 order by n; +n b +2 100 +4 400 +5 600 +1000 350 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +2 100 +4 400 +5 600 +1000 350 +drop table t1; +create table t1 (n int primary key auto_increment not null, +b int, unique(b)) engine=tokudb; +insert into t1 values(null,100); +select * from t1 order by n; +n b +1 100 +include/sync_slave_sql_with_master.inc +insert into t1 values(null,200),(null,300); +delete from t1 where b <> 100; +select * from t1 order by n; +n b +1 100 +insert into t1 values(null,100),(null,350) on duplicate key update n=2; +select * from t1 order by n; +n b +2 100 +3 350 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +2 100 +3 350 +drop table t1; +include/sync_slave_sql_with_master.inc +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT, +UNIQUE(b)) ENGINE=tokudb; +INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10; +SELECT * FROM t1 ORDER BY a; +a b +1 10 +2 2 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY a; +a b +1 10 +2 2 +drop table t1; +CREATE TABLE t1 ( +id bigint(20) unsigned NOT NULL auto_increment, +field_1 int(10) unsigned NOT NULL, +field_2 varchar(255) NOT NULL, +field_3 varchar(255) NOT NULL, +PRIMARY KEY (id), +UNIQUE KEY field_1 (field_1, field_2) +) ENGINE=tokudb; +CREATE TABLE t2 ( +field_a int(10) unsigned NOT NULL, +field_b varchar(255) NOT NULL, +field_c varchar(255) NOT NULL +) ENGINE=tokudb; +INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d'); +INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e'); +INSERT INTO t1 (field_1, field_2, field_3) +SELECT t2.field_a, t2.field_b, t2.field_c +FROM t2 +ON DUPLICATE KEY UPDATE +t1.field_3 = t2.field_c; +INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f'); +INSERT INTO t1 (field_1, field_2, field_3) +SELECT t2.field_a, t2.field_b, t2.field_c +FROM t2 +ON DUPLICATE KEY UPDATE +t1.field_3 = t2.field_c; +SELECT * FROM t1 ORDER BY id; +id field_1 field_2 field_3 +1 1 a 1a +2 2 b 2b +3 3 c 3c +4 4 d 4d +5 5 e 5e +8 6 f 6f +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY id; +id field_1 field_2 field_3 +1 1 a 1a +2 2 b 2b +3 3 c 3c +4 4 d 4d +5 5 e 5e +8 6 f 6f +drop table t1, t2; +DROP PROCEDURE IF EXISTS p1; +DROP TABLE IF EXISTS t1, t2; +SELECT LAST_INSERT_ID(0); +LAST_INSERT_ID(0) +0 +CREATE TABLE t1 ( +id INT NOT NULL DEFAULT 0, +last_id INT, +PRIMARY KEY (id) +) ENGINE=tokudb; +CREATE TABLE t2 ( +id INT NOT NULL AUTO_INCREMENT, +last_id INT, +PRIMARY KEY (id) +) ENGINE=tokudb; +CREATE PROCEDURE p1() +BEGIN +INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID()); +INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID()); +END| +CALL p1(); +SELECT * FROM t1 ORDER BY id; +id last_id +0 1 +SELECT * FROM t2 ORDER BY id; +id last_id +1 0 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY id; +id last_id +0 1 +SELECT * FROM t2 ORDER BY id; +id last_id +1 0 +DROP PROCEDURE p1; +DROP TABLE t1, t2; +DROP PROCEDURE IF EXISTS p1; +DROP FUNCTION IF EXISTS f1; +DROP FUNCTION IF EXISTS f2; +DROP FUNCTION IF EXISTS f3; +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 ( +i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +j INT DEFAULT 0 +) ENGINE=tokudb; +CREATE TABLE t2 (i INT) ENGINE=tokudb; +CREATE PROCEDURE p1() +BEGIN +INSERT INTO t1 (i) VALUES (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +INSERT INTO t1 (i) VALUES (NULL), (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +END | +CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATA +BEGIN +INSERT INTO t1 (i) VALUES (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +INSERT INTO t1 (i) VALUES (NULL), (NULL); +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +RETURN 0; +END | +CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC +RETURN LAST_INSERT_ID() | +CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA +BEGIN +INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); +RETURN 0; +END | +INSERT INTO t1 VALUES (NULL, -1); +CALL p1(); +SELECT f1(); +f1() +0 +INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()), +(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2()); +INSERT INTO t1 VALUES (NULL, f2()); +INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); +UPDATE t1 SET j= -1 WHERE i IS NULL; +INSERT INTO t1 (i) VALUES (NULL); +INSERT INTO t1 (i) VALUES (NULL); +SELECT f3(); +f3() +0 +SELECT * FROM t1 ORDER BY i; +i j +1 -1 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 3 +9 3 +10 3 +11 3 +12 3 +13 8 +14 -1 +15 13 +16 0 +17 0 +SELECT * FROM t2 ORDER BY i; +i +2 +3 +5 +6 +16 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +i j +1 -1 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 3 +9 3 +10 3 +11 3 +12 3 +13 8 +14 -1 +15 13 +16 0 +17 0 +SELECT * FROM t2; +i +2 +3 +5 +6 +16 +DROP PROCEDURE p1; +DROP FUNCTION f1; +DROP FUNCTION f2; +DROP FUNCTION f3; +DROP TABLE t1, t2; +include/sync_slave_sql_with_master.inc +# +# End of 5.0 tests +# +create table t2 ( +id int not null auto_increment, +last_id int, +primary key (id) +) engine=tokudb; +truncate table t2; +create table t1 (id tinyint primary key) engine=tokudb; +create function insid() returns int +begin +insert into t2 (last_id) values (0); +return 0; +end| +set sql_log_bin=0; +insert into t2 (id) values(1),(2),(3); +delete from t2; +set sql_log_bin=1; +select insid(); +insid() +0 +set sql_log_bin=0; +insert into t2 (id) values(5),(6),(7); +delete from t2 where id>=5; +set sql_log_bin=1; +insert into t1 select insid(); +select * from t1 order by id; +id +0 +select * from t2 order by id; +id last_id +4 0 +8 0 +include/sync_slave_sql_with_master.inc +select * from t1 order by id; +id +0 +select * from t2 order by id; +id last_id +4 0 +8 0 +drop table t1; +drop function insid; +truncate table t2; +create table t1 (n int primary key auto_increment not null, +b int, unique(b)) engine=tokudb; +create procedure foo() +begin +insert into t1 values(null,10); +insert ignore into t1 values(null,10); +insert ignore into t1 values(null,10); +insert into t2 values(null,3); +end| +call foo(); +select * from t1 order by n; +n b +1 10 +select * from t2 order by id; +id last_id +1 3 +include/sync_slave_sql_with_master.inc +select * from t1 order by n; +n b +1 10 +select * from t2 order by id; +id last_id +1 3 +drop table t1, t2; +drop procedure foo; +SET @@global.concurrent_insert= @old_concurrent_insert; +set @@session.sql_auto_is_null=default; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id_pk.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id_pk.result new file mode 100644 index 00000000000..cce5d6d42e6 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_insert_id_pk.result @@ -0,0 +1,82 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT."); +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (1),(2),(3); +insert into t1 values (null); +insert into t2 values (null,last_insert_id()); +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +1 +2 +3 +4 +select * from t2 ORDER BY b; +b c +1 4 +drop table t1; +drop table t2; +create table t1(a int auto_increment, key(a)) engine=tokudb; +create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=tokudb; +SET FOREIGN_KEY_CHECKS=0; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 values (null,last_insert_id()); +SET FOREIGN_KEY_CHECKS=1; +include/sync_slave_sql_with_master.inc +select * from t1; +a +10 +11 +12 +13 +select * from t2; +b c +5 0 +6 11 +drop table t2; +drop table t1; +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 (c) select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +include/sync_slave_sql_with_master.inc +select * from t1 ORDER BY a; +a +10 +11 +12 +13 +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +drop table t1; +drop table t2; +include/sync_slave_sql_with_master.inc +SET TIMESTAMP=1000000000; +CREATE TABLE t1 ( a INT UNIQUE ); +SET FOREIGN_KEY_CHECKS=0; +INSERT INTO t1 VALUES (1),(1); +Got one of the listed errors +include/sync_slave_sql_with_master.inc +drop table t1; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_ddl.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_ddl.result new file mode 100644 index 00000000000..7f2e9465829 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_ddl.result @@ -0,0 +1,159 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +==========MASTER========== +show global variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +show session variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +select @@global.binlog_format, @@session.binlog_format; +@@global.binlog_format @@session.binlog_format +MIXED MIXED +==========SLAVE=========== +show global variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +show session variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +select @@global.binlog_format, @@session.binlog_format; +@@global.binlog_format @@session.binlog_format +MIXED MIXED + +******************** DDL for database ******************** +DROP DATABASE IF EXISTS test_rpl; +DROP DATABASE IF EXISTS test_rpl_1; +CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci; +DROP DATABASE test_rpl_1; +CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci; +==========MASTER========== +SHOW DATABASES LIKE 'test_rpl%'; +Database (test_rpl%) +test_rpl +==========SLAVE=========== +SHOW DATABASES LIKE 'test_rpl%'; +Database (test_rpl%) +test_rpl +USE test_rpl; + +******************** DDL for tables ******************** +CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=TokuDB; +ALTER TABLE t0 DROP INDEX index2; +ALTER TABLE t0 ADD COLUMN b char(254); +ALTER TABLE t0 ADD INDEX index1 (b); +ALTER TABLE t0 DROP COLUMN c; +RENAME TABLE t0 TO t1; +CREATE TABLE t2 LIKE t1; +==========MASTER========== +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +==========SLAVE=========== +USE test_rpl; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 + +******************** DDL for indexes ******************** +ALTER TABLE t2 ADD COLUMN d datetime; +CREATE INDEX index2 on t2 (d); +CREATE INDEX index3 on t2 (a, d); +==========MASTER========== +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + `d` datetime DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`), + KEY `index2` (`d`), + KEY `index3` (`a`,`d`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +==========SLAVE=========== +USE test_rpl; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) NOT NULL AUTO_INCREMENT, + `b` char(254) DEFAULT NULL, + `d` datetime DEFAULT NULL, + PRIMARY KEY (`a`), + KEY `index1` (`b`), + KEY `index2` (`d`), + KEY `index3` (`a`,`d`) +) ENGINE=TokuDB DEFAULT CHARSET=latin1 +ALTER TABLE t2 DROP COLUMN d; + + +******************** SHOW BINLOG EVENTS ******************** +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl +master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl_1 +master-bin.000001 # Query # # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci +master-bin.000001 # Query # # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci +master-bin.000001 # Query # # DROP DATABASE test_rpl_1 +master-bin.000001 # Query # # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci +master-bin.000001 # Query # # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=TokuDB +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2 +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254) +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b) +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c +master-bin.000001 # Query # # use `test_rpl`; RENAME TABLE t0 TO t1 +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 LIKE t1 +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime +master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index2 on t2 (d) +master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index3 on t2 (a, d) +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d +drop database test_rpl; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_dml.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_dml.result new file mode 100644 index 00000000000..ba9c06106ca --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_mixed_dml.result @@ -0,0 +1,1109 @@ +SET SESSION tokudb_pk_insert_mode = 2; +Warnings: +Warning 131 Using tokudb_pk_insert_mode is deprecated and the parameter may be removed in future releases. +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +==========MASTER========== +show global variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +show session variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +select @@global.binlog_format, @@session.binlog_format; +@@global.binlog_format @@session.binlog_format +MIXED MIXED +==========SLAVE=========== +show global variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +show session variables like 'binlog_format%'; +Variable_name Value +binlog_format MIXED +select @@global.binlog_format, @@session.binlog_format; +@@global.binlog_format @@session.binlog_format +MIXED MIXED +CREATE DATABASE test_rpl; + +******************** PREPARE TESTING ******************** +USE test_rpl; +CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB; +CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB; +INSERT INTO t1 VALUES(1, 't1, text 1'); +INSERT INTO t1 VALUES(2, 't1, text 2'); +INSERT INTO t2 VALUES(1, 't2, text 1'); + +******************** DELETE ******************** +DELETE FROM t1 WHERE a = 1; +DELETE FROM t2 WHERE b <> UUID(); +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +2 t1, text 2 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +2 t1, text 2 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +DELETE FROM t1; +DELETE FROM t2; + +******************** INSERT ******************** +INSERT INTO t1 VALUES(1, 't1, text 1'); +INSERT INTO t1 VALUES(2, UUID()); +INSERT INTO t2 SELECT * FROM t1; +INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'; +DELETE FROM t1 WHERE a = 2; +DELETE FROM t2 WHERE a = 2; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 1 +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 t2, text 1 +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 1 +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 t2, text 1 +DELETE FROM t1; +DELETE FROM t2; + +******************** LOAD DATA INFILE ******************** +LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data/rpl_mixed.dat' INTO TABLE t1 FIELDS TERMINATED BY '|' ; +SELECT * FROM t1 ORDER BY a; +a b +10 line A +20 line B +30 line C +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +3 +SELECT * FROM t1 ORDER BY a; +a b +10 line A +20 line B +30 line C +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +3 +SELECT * FROM t1 ORDER BY a; +a b +10 line A +20 line B +30 line C +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +DELETE FROM t1; +DELETE FROM t2; + +******************** REPLACE ******************** +INSERT INTO t1 VALUES(1, 't1, text 1'); +INSERT INTO t1 VALUES(2, 't1, text 2'); +INSERT INTO t1 VALUES(3, 't1, text 3'); +REPLACE INTO t1 VALUES(1, 't1, text 11'); +REPLACE INTO t1 VALUES(2, UUID()); +REPLACE INTO t1 SET a=3, b='t1, text 33'; +DELETE FROM t1 WHERE a = 2; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 11 +3 t1, text 33 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 11 +3 t1, text 33 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +DELETE FROM t1; +DELETE FROM t2; + +******************** SELECT ******************** +INSERT INTO t1 VALUES(1, 't1, text 1'); +SELECT * FROM t1 WHERE b <> UUID() ORDER BY a; +a b +1 t1, text 1 +DELETE FROM t1; +DELETE FROM t2; + +******************** JOIN ******************** +INSERT INTO t1 VALUES(1, 'CCC'); +INSERT INTO t1 VALUES(2, 'DDD'); +INSERT INTO t2 VALUES(1, 'DDD'); +INSERT INTO t2 VALUES(2, 'CCC'); +SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a ORDER BY t1.a,t2.a; +a b a b +1 CCC 1 DDD +2 DDD 2 CCC +SELECT * FROM t1 INNER JOIN t2 ON t1.b = t2.b ORDER BY t1.a,t2.a; +a b a b +1 CCC 2 CCC +2 DDD 1 DDD +DELETE FROM t1; +DELETE FROM t2; + +******************** UNION ******************** +INSERT INTO t1 VALUES(1, 't1, text 1'); +INSERT INTO t2 VALUES(1, 't2, text 1'); +SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> UUID(); +a b +1 t1, text 1 +1 t2, text 1 +DELETE FROM t1; +DELETE FROM t2; + +******************** TRUNCATE ******************** +INSERT INTO t1 VALUES(1, 't1, text 1'); +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +TRUNCATE t1; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +0 +SELECT * FROM t1 ORDER BY a; +a b +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +0 +SELECT * FROM t1 ORDER BY a; +a b +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +DELETE FROM t1; +DELETE FROM t2; + +******************** UPDATE ******************** +INSERT INTO t1 VALUES(1, 't1, text 1'); +INSERT INTO t2 VALUES(1, 't2, text 1'); +UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 1 updated +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 t2, text 1 +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 t1, text 1 updated +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 t2, text 1 +UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test'; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 test +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 test +DELETE FROM t1; +DELETE FROM t2; + +******************** DESCRIBE ******************** +DESCRIBE t1; +Field Type Null Key Default Extra +a int(11) NO PRI NULL auto_increment +b char(254) YES NULL +DESCRIBE t2 b; +Field Type Null Key Default Extra +b char(254) YES NULL + +******************** USE ******************** +USE test_rpl; + +******************** TRANSACTION ******************** +START TRANSACTION; +INSERT INTO t1 VALUES (1, 'start'); +COMMIT; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 start +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 start +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +START TRANSACTION; +INSERT INTO t1 VALUES (2, 'rollback'); +ROLLBACK; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 start +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 start +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +START TRANSACTION; +INSERT INTO t1 VALUES (3, 'before savepoint s1'); +SAVEPOINT s1; +INSERT INTO t1 VALUES (4, 'after savepoint s1'); +ROLLBACK TO SAVEPOINT s1; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +SELECT * FROM t1 ORDER BY a; +a b +1 start +3 before savepoint s1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 start +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +START TRANSACTION; +INSERT INTO t1 VALUES (5, 'before savepoint s2'); +SAVEPOINT s2; +INSERT INTO t1 VALUES (6, 'after savepoint s2'); +INSERT INTO t1 VALUES (7, CONCAT('with UUID() ',UUID())); +RELEASE SAVEPOINT s2; +COMMIT; +DELETE FROM t1 WHERE a = 7; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +SELECT * FROM t1 ORDER BY a; +a b +1 start +3 before savepoint s1 +5 before savepoint s2 +6 after savepoint s2 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +4 +SELECT * FROM t1 ORDER BY a; +a b +1 start +3 before savepoint s1 +5 before savepoint s2 +6 after savepoint s2 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +DELETE FROM t1; +DELETE FROM t2; + +******************** LOCK TABLES ******************** +LOCK TABLES t1 READ , t2 READ; +UNLOCK TABLES; + +******************** TRANSACTION ISOLATION LEVEL ******************** +SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; +SET TRANSACTION ISOLATION LEVEL READ COMMITTED; +SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; +SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; + +******************** CREATE USER ******************** +CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111'; +==========MASTER========== +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *1111111111111111111111111111111111111111 N +==========SLAVE=========== +USE test_rpl; +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *1111111111111111111111111111111111111111 N + +******************** GRANT ******************** +GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost'; +==========MASTER========== +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *1111111111111111111111111111111111111111 Y +==========SLAVE=========== +USE test_rpl; +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *1111111111111111111111111111111111111111 Y + +******************** REVOKE ******************** +REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost'; +==========MASTER========== +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *1111111111111111111111111111111111111111 N +==========SLAVE=========== +USE test_rpl; +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *1111111111111111111111111111111111111111 N + +******************** SET PASSWORD ******************** +SET PASSWORD FOR 'user_test_rpl'@'localhost' = '*0000000000000000000000000000000000000000'; +==========MASTER========== +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *0000000000000000000000000000000000000000 N +==========SLAVE=========== +USE test_rpl; +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl *0000000000000000000000000000000000000000 N + +******************** RENAME USER ******************** +RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost'; +==========MASTER========== +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl_2 *0000000000000000000000000000000000000000 N +==========SLAVE=========== +USE test_rpl; +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +localhost user_test_rpl_2 *0000000000000000000000000000000000000000 N + +******************** DROP USER ******************** +DROP USER 'user_test_rpl_2'@'localhost'; +==========MASTER========== +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +==========SLAVE=========== +USE test_rpl; +SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; +host user password select_priv +INSERT INTO t1 VALUES(100, 'test'); + +******************** ANALYZE ******************** +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test_rpl.t1 analyze status OK + +******************** CHECK TABLE ******************** +CHECK TABLE t1; +Table Op Msg_type Msg_text +test_rpl.t1 check status OK + +******************** CHECKSUM TABLE ******************** +CHECKSUM TABLE t1; +Table Checksum +test_rpl.t1 1837058639 + +******************** OPTIMIZE TABLE ******************** +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test_rpl.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test_rpl.t1 optimize status OK + +******************** REPAIR TABLE ******************** +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test_rpl.t1 repair note The storage engine for the table doesn't support repair + +******************** SET VARIABLE ******************** +SET @test_rpl_var = 1; +SHOW VARIABLES LIKE 'test_rpl_var'; +Variable_name Value + +******************** SHOW ******************** +==========MASTER========== +SHOW DATABASES LIKE 'test_rpl%'; +Database (test_rpl%) +test_rpl +==========SLAVE=========== +SHOW DATABASES LIKE 'test_rpl%'; +Database (test_rpl%) +test_rpl + +******************** PROCEDURE ******************** +CREATE PROCEDURE p1 () +BEGIN +UPDATE t1 SET b = 'test' WHERE a = 201; +END| +CREATE PROCEDURE p2 () +BEGIN +UPDATE t1 SET b = UUID() WHERE a = 202; +END| +INSERT INTO t1 VALUES(201, 'test 201'); +CALL p1(); +INSERT INTO t1 VALUES(202, 'test 202'); +CALL p2(); +DELETE FROM t1 WHERE a = 202; +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +SELECT * FROM t1 ORDER BY a; +a b +100 test +201 test +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +SELECT * FROM t1 ORDER BY a; +a b +100 test +201 test +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +ALTER PROCEDURE p1 COMMENT 'p1'; +DROP PROCEDURE p1; +DROP PROCEDURE p2; +DELETE FROM t1; +DELETE FROM t2; + +******************** TRIGGER ******************** +CREATE TRIGGER tr1 BEFORE INSERT ON t1 +FOR EACH ROW BEGIN +INSERT INTO t2 SET a = NEW.a, b = NEW.b; +END| +INSERT INTO t1 VALUES (1, 'test'); +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 test +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test +SELECT COUNT(*) FROM t2; +COUNT(*) +1 +SELECT * FROM t2 ORDER BY a; +a b +1 test +DELETE FROM t1; +DELETE FROM t2; +DROP TRIGGER tr1; + + +******************** EVENTS ******************** +GRANT EVENT ON *.* TO 'root'@'localhost'; +INSERT INTO t1 VALUES(1, 'test1'); +CREATE EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1; +==========MASTER========== +SHOW EVENTS; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +test_rpl e1 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +==========SLAVE=========== +USE test_rpl; +SHOW EVENTS; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +test_rpl e1 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +ALTER EVENT e1 RENAME TO e2; +==========MASTER========== +SHOW EVENTS; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +==========SLAVE=========== +USE test_rpl; +SHOW EVENTS; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +==========MASTER========== +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +==========SLAVE=========== +USE test_rpl; +SELECT COUNT(*) FROM t1; +COUNT(*) +1 +SELECT * FROM t1 ORDER BY a; +a b +1 test1 +SELECT COUNT(*) FROM t2; +COUNT(*) +0 +SELECT * FROM t2 ORDER BY a; +a b +DROP EVENT e2; +==========MASTER========== +SHOW EVENTS; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +==========SLAVE=========== +USE test_rpl; +SHOW EVENTS; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +DELETE FROM t1; +DELETE FROM t2; + +******************** VIEWS ******************** +INSERT INTO t1 VALUES(1, 'test1'); +INSERT INTO t1 VALUES(2, 'test2'); +CREATE VIEW v1 AS SELECT * FROM t1 WHERE a = 1; +CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> UUID(); +==========MASTER========== +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 1) latin1 latin1_swedish_ci +SELECT * FROM v1 ORDER BY a; +a b +1 test1 +==========SLAVE=========== +USE test_rpl; +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 1) latin1 latin1_swedish_ci +SELECT * FROM v1 ORDER BY a; +a b +1 test1 +ALTER VIEW v1 AS SELECT * FROM t1 WHERE a = 2; +==========MASTER========== +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 2) latin1 latin1_swedish_ci +SELECT * FROM v1 ORDER BY a; +a b +2 test2 +==========SLAVE=========== +USE test_rpl; +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 2) latin1 latin1_swedish_ci +SELECT * FROM v1 ORDER BY a; +a b +2 test2 +DROP VIEW v1; +DROP VIEW v2; +DELETE FROM t1; +DELETE FROM t2; + + +******************** SHOW BINLOG EVENTS ******************** +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # CREATE DATABASE test_rpl +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) +master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1' +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 WHERE a = 2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text 3') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text 33' +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; TRUNCATE t1 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test' +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (1, 'start') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before savepoint s1') +master-bin.000001 # Query # # SAVEPOINT `s1` +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2') +master-bin.000001 # Query # # SAVEPOINT `s2` +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2') +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 7 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111' +master-bin.000001 # Query # # use `test_rpl`; GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost' +master-bin.000001 # Query # # use `test_rpl`; REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost' +master-bin.000001 # Query # # use `test_rpl`; SET PASSWORD FOR 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000' +master-bin.000001 # Query # # use `test_rpl`; RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost' +master-bin.000001 # Query # # use `test_rpl`; DROP USER 'user_test_rpl_2'@'localhost' +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; ANALYZE TABLE t1 +master-bin.000001 # Query # # use `test_rpl`; OPTIMIZE TABLE t1 +master-bin.000001 # Query # # use `test_rpl`; REPAIR TABLE t1 +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() +BEGIN +UPDATE t1 SET b = 'test' WHERE a = 201; +END +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`() +BEGIN +UPDATE t1 SET b = UUID() WHERE a = 202; +END +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a = 201 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 202 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1' +master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p1 +master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p2 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1 +FOR EACH ROW BEGIN +INSERT INTO t2 SET a = NEW.a, b = NEW.b; +END +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; DROP TRIGGER tr1 +master-bin.000001 # Query # # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'localhost' +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1 +master-bin.000001 # Query # # use `test_rpl`; ALTER EVENT e1 RENAME TO e2 +master-bin.000001 # Query # # use `test_rpl`; DROP EVENT e2 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1 +master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID() +master-bin.000001 # Query # # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2 +master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v1 +master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v2 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +drop database test_rpl; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update.result new file mode 100644 index 00000000000..4ff45b46bd2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update.result @@ -0,0 +1,29 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); +CREATE TABLE t1 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +CREATE TABLE t2 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +INSERT INTO t1 VALUES (NULL, 0); +INSERT INTO t1 SELECT NULL, 0 FROM t1; +INSERT INTO t2 VALUES (NULL, 0), (NULL,1); +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +UPDATE t1, t2 SET t1.b = t2.b WHERE t1.a = t2.a; +include/sync_slave_sql_with_master.inc +drop table t1, t2; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update2.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update2.result new file mode 100644 index 00000000000..d811ce42143 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update2.result @@ -0,0 +1,60 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT'); +drop table if exists t1,t2; +CREATE TABLE t1 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +CREATE TABLE t2 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +INSERT INTO t1 VALUES (NULL, 0); +INSERT INTO t1 SELECT NULL, 0 FROM t1; +INSERT INTO t2 VALUES (NULL, 0), (NULL,1); +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +UPDATE t1, t2 SET t1.b = (t2.b+4) WHERE t1.a = t2.a; +SELECT * FROM t1 ORDER BY a; +a b +1 4 +2 5 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +SELECT * FROM t1 ORDER BY a; +a b +1 4 +2 5 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +drop table t1,t2; +include/sync_slave_sql_with_master.inc +reset master; +RESET MASTER; +CREATE TABLE t1 ( a INT ); +INSERT INTO t1 VALUES (0); +UPDATE t1, (SELECT 3 as b) AS x SET t1.a = x.b; +select * from t1; +a +3 +include/sync_slave_sql_with_master.inc +select * from t1; +a +3 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update3.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update3.result new file mode 100644 index 00000000000..48de0f97072 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_multi_update3.result @@ -0,0 +1,202 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); + +-------- Test for BUG#9361 -------- +CREATE TABLE t1 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +CREATE TABLE t2 ( +a int unsigned not null auto_increment primary key, +b int unsigned +) ENGINE=TokuDB; +INSERT INTO t1 VALUES (NULL, 0); +INSERT INTO t1 SELECT NULL, 0 FROM t1; +INSERT INTO t2 VALUES (NULL, 0), (NULL,1); +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 0 +2 1 +UPDATE t2, (SELECT a FROM t1 ORDER BY a) AS t SET t2.b = t.a+5 ; +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 6 +2 6 +include/sync_slave_sql_with_master.inc +SELECT * FROM t1 ORDER BY a; +a b +1 0 +2 0 +SELECT * FROM t2 ORDER BY a; +a b +1 6 +2 6 +drop table t1,t2; + +-------- Test 1 for BUG#9361 -------- +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +CREATE TABLE t1 ( +a1 char(30), +a2 int, +a3 int, +a4 char(30), +a5 char(30) +); +CREATE TABLE t2 ( +b1 int, +b2 char(30) +); +INSERT INTO t1 VALUES ('Yes', 1, NULL, 'foo', 'bar'); +INSERT INTO t2 VALUES (1, 'baz'); +UPDATE t1 a, t2 +SET a.a1 = 'No' +WHERE a.a2 = +(SELECT b1 +FROM t2 +WHERE b2 = 'baz') +AND a.a3 IS NULL +AND a.a4 = 'foo' +AND a.a5 = 'bar'; +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +a1 a2 a3 a4 a5 +No 1 NULL foo bar +SELECT * FROM t2; +b1 b2 +1 baz +DROP TABLE t1, t2; + +-------- Test 2 for BUG#9361 -------- +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +CREATE TABLE t1 ( +i INT, +j INT, +x INT, +y INT, +z INT +); +CREATE TABLE t2 ( +i INT, +k INT, +x INT, +y INT, +z INT +); +CREATE TABLE t3 ( +j INT, +k INT, +x INT, +y INT, +z INT +); +INSERT INTO t1 VALUES ( 1, 2,13,14,15); +INSERT INTO t2 VALUES ( 1, 3,23,24,25); +INSERT INTO t3 VALUES ( 2, 3, 1,34,35), ( 2, 3, 1,34,36); +UPDATE t1 AS a +INNER JOIN t2 AS b +ON a.i = b.i +INNER JOIN t3 AS c +ON a.j = c.j AND b.k = c.k +SET a.x = b.x, +a.y = b.y, +a.z = ( +SELECT sum(z) +FROM t3 +WHERE y = 34 +) +WHERE b.x = 23; +include/sync_slave_sql_with_master.inc +SELECT * FROM t1; +i j x y z +1 2 23 24 71 +DROP TABLE t1, t2, t3; +DROP TABLE IF EXISTS t1; +Warnings: +Note 1051 Unknown table 'test.t1' +DROP TABLE IF EXISTS t2; +Warnings: +Note 1051 Unknown table 'test.t2' +CREATE TABLE t1 ( +idp int(11) NOT NULL default '0', +idpro int(11) default NULL, +price decimal(19,4) default NULL, +PRIMARY KEY (idp) +); +CREATE TABLE t2 ( +idpro int(11) NOT NULL default '0', +price decimal(19,4) default NULL, +nbprice int(11) default NULL, +PRIMARY KEY (idpro) +); +INSERT INTO t1 VALUES +(1,1,'3.0000'), +(2,2,'1.0000'), +(3,1,'1.0000'), +(4,1,'4.0000'), +(5,3,'2.0000'), +(6,2,'4.0000'); +INSERT INTO t2 VALUES +(1,'0.0000',0), +(2,'0.0000',0), +(3,'0.0000',0); +update +t2 +join +( select idpro, min(price) as min_price, count(*) as nbr_price +from t1 +where idpro>0 and price>0 +group by idpro +) as table_price +on t2.idpro = table_price.idpro +set t2.price = table_price.min_price, +t2.nbprice = table_price.nbr_price; +select "-- MASTER AFTER JOIN --" as ""; + +-- MASTER AFTER JOIN -- +select * from t1; +idp idpro price +1 1 3.0000 +2 2 1.0000 +3 1 1.0000 +4 1 4.0000 +5 3 2.0000 +6 2 4.0000 +select * from t2; +idpro price nbprice +1 1.0000 3 +2 1.0000 2 +3 2.0000 1 +include/sync_slave_sql_with_master.inc +select "-- SLAVE AFTER JOIN --" as ""; + +-- SLAVE AFTER JOIN -- +select * from t1; +idp idpro price +1 1 3.0000 +2 2 1.0000 +3 1 1.0000 +4 1 4.0000 +5 3 2.0000 +6 2 4.0000 +select * from t2; +idpro price nbprice +1 1.0000 3 +2 1.0000 2 +3 2.0000 1 +DROP TABLE t1, t2; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ff.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ff.result new file mode 100644 index 00000000000..76a5e31b969 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ff.result @@ -0,0 +1,24 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl%'; +Variable_name Value +tokudb_rpl_check_readonly OFF +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 0 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ft.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ft.result new file mode 100644 index 00000000000..2930cb019b4 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_ft.result @@ -0,0 +1,24 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 0 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +0 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tf.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tf.result new file mode 100644 index 00000000000..76a5e31b969 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tf.result @@ -0,0 +1,24 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl%'; +Variable_name Value +tokudb_rpl_check_readonly OFF +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 0 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tt.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tt.result new file mode 100644 index 00000000000..0cba2a1cddb --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_read_only_tt.result @@ -0,0 +1,24 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 0 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_rfr_partition_table.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_rfr_partition_table.result new file mode 100644 index 00000000000..4594959c6d0 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_rfr_partition_table.result @@ -0,0 +1,36 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression(".*read free replication is disabled for TokuDB table.*continue with rows lookup"); +CREATE TABLE t1 (id int(11) NOT NULL, pid int(11), PRIMARY KEY (id)) ENGINE=TokuDB +PARTITION BY RANGE (id) +(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, +PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, +PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); +insert into t1 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); +CREATE TABLE t2 (id int(11) NOT NULL, pid int(11), key idx_1(id)) ENGINE=TokuDB +PARTITION BY RANGE (id) +(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, +PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, +PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); +insert into t2 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); +include/stop_slave.inc +set global debug= "+d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; +include/start_slave.inc +insert into t1 values(21, 21); +delete from t1 where id = 11; +update t1 set pid = 2 where id = 1; +include/diff_tables.inc [master:test.t1, slave:test.t1] +insert into t2 values(21, 21); +delete from t2 where id = 11; +update t2 set pid = 2 where id = 1; +include/diff_tables.inc [master:test.t2, slave:test.t2] +drop table t1; +drop table t2; +include/stop_slave.inc +set global debug= "-d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; +set global debug= @saved_debug; +include/start_slave.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_crash_safe.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_crash_safe.result new file mode 100644 index 00000000000..04578c3ff68 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_crash_safe.result @@ -0,0 +1,2183 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); +################################################################################### +# PREPARE EXECUTION +################################################################################### +include/stop_slave.inc +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb; +ALTER TABLE mysql.slave_worker_info ENGINE= Innodb; +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +include/start_slave.inc +rpl_mixing_engines.inc [commands=configure] +CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1); +CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_tt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_nt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +RETURN "fc_i_nt_3_tt_3_suc"; +END| +CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id; +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +################################################################################### +# EXECUTE CASES CRASHING THE XID +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (9, 1); +fc_i_tt_5_suc (9, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (10, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (12, 4); +fc_i_tt_5_suc (12, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (13, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (15, 2); +fc_i_tt_5_suc (15, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (16, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (19, 1); +fc_i_tt_5_suc (19, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (20, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (22, 4); +fc_i_tt_5_suc (22, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (23, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (25, 2); +fc_i_tt_5_suc (25, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (26, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (29, 1); +fc_i_tt_5_suc (29, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (30, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (32, 4); +fc_i_tt_5_suc (32, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (33, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (35, 2); +fc_i_tt_5_suc (35, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (36, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (39, 1); +fc_i_tt_5_suc (39, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (40, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (42, 4); +fc_i_tt_5_suc (42, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (43, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (45, 2); +fc_i_tt_5_suc (45, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (46, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_5) +master-bin.000001 # Table_map # # table_id: # (test.tt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.tt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# EXECUTE CASES CRASHING THE BEGIN/COMMIT +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N] +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-func] +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_nt_5_suc (49, 1); +fc_i_nt_5_suc (49, 1) +fc_i_nt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.nt_5) +master-bin.000001 # Table_map # # table_id: # (test.nt_6) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# CHECK CONSISTENCY +################################################################################### +include/sync_slave_sql_with_master.inc +################################################################################### +# CLEAN +################################################################################### +rpl_mixing_engines.inc [commands=clean] +DROP TABLE tt_1; +DROP TABLE tt_2; +DROP TABLE tt_3; +DROP TABLE tt_4; +DROP TABLE tt_5; +DROP TABLE tt_6; +DROP TABLE nt_1; +DROP TABLE nt_2; +DROP TABLE nt_3; +DROP TABLE nt_4; +DROP TABLE nt_5; +DROP TABLE nt_6; +DROP PROCEDURE pc_i_tt_5_suc; +DROP PROCEDURE pc_i_nt_5_suc; +DROP FUNCTION fc_i_tt_5_suc; +DROP FUNCTION fc_i_nt_5_suc; +DROP FUNCTION fc_i_nt_3_tt_3_suc; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_blobs.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_blobs.result new file mode 100644 index 00000000000..a0713d01593 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_blobs.result @@ -0,0 +1,4739 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check when there is no key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the AI (they are not updated) +### will not break replication (check even if there is a key in the table) +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) +### will not break replication +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that updates without blobs in the BI (PK exists int the table) +### will not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob in a key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a unique (not null) key does not break replication +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Asserts that declaring a blob as part of a primary key does not break replication +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_full.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_full.result new file mode 100644 index 00000000000..d86105a3440 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_full.result @@ -0,0 +1,3681 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### Testing with TokuDB storage engine +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +#### case #1: AI: no values logged +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +INSERT INTO t1 VALUES (); +SELECT * FROM t1; +c1 +100 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +100 +SELECT * FROM t1; +c1 +100 +DROP TABLE t1; +include/rpl_sync.inc +#### case #2: AI: not empty but slave does not have usable data for its columns (INSERT) +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100, c2 int, primary key(c2)) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1(c2) VALUES (1); +SELECT * FROM t1; +c1 c2 +100 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +100 +SELECT * FROM t1; +c1 +100 +DROP TABLE t1; +include/rpl_sync.inc +#### case #3: BI: usable columns on the slave, AI: no usable columns on the slave +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100, c2 int) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1 VALUES (1,1); +SELECT * FROM t1; +c1 c2 +1 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +UPDATE t1 SET c2=2 WHERE c1=1 AND c2=1; +SELECT * FROM t1; +c1 c2 +1 2 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +DROP TABLE t1; +include/rpl_sync.inc +#### case #4: AI, BI: no usable columns on the slave (NOOP UPDATE). +#### +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 int DEFAULT 100, c2 int, c3 int, primary key(c2)) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1 VALUES (1,1,1); +SELECT * FROM t1; +c1 c2 c3 +1 1 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +UPDATE t1 SET c3=300 WHERE c2=1; +SELECT * FROM t1; +c1 c2 c3 +1 1 300 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +DROP TABLE t1; +include/rpl_sync.inc +#### case #5: BI: no usable columns on the slave, AI: usable columns on the slave (slave must stop). +#### +CREATE TABLE t1 (c1 INT DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 INT DEFAULT 100) Engine=ENGINE; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=0; +CREATE TABLE t1 (c1 INT DEFAULT 100, c2 INT PRIMARY KEY) Engine=ENGINE; +SET SQL_LOG_BIN=1; +INSERT INTO t1 VALUES (1,1); +SELECT * FROM t1; +c1 c2 +1 1 +include/rpl_sync.inc +SELECT * FROM t1; +c1 +1 +SELECT * FROM t1; +c1 +1 +UPDATE t1 SET c1=300 WHERE c2=1; +SELECT * FROM t1; +c1 c2 +300 1 +SET SQL_LOG_BIN=0; +call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032"); +call mtr.add_suppression("Slave SQL: .*Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032"); +call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); +SET SQL_LOG_BIN=1; +include/wait_for_slave_sql_error_and_skip.inc [errno=1032] +DROP TABLE t1; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_min.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_min.result new file mode 100644 index 00000000000..45a5e6ee341 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_min.result @@ -0,0 +1,3522 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_noblob.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_noblob.result new file mode 100644 index 00000000000..52906a7ee36 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_eng_noblob.result @@ -0,0 +1,3522 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +### engines: TokuDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite NOT NULL Unique key with holes +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key with holes +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Primary Key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Primary key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Unique key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +****** TEST: One Composite key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: One key +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +******* TEST: No keys +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, '1', '1', '1' ); +INSERT INTO t VALUES (4, '4', '4', '4' ); +INSERT INTO t VALUES (7, '7', '7', '7' ); +INSERT INTO t VALUES (9, '9', '9', NULL ); +INSERT INTO t VALUES (2, '1', '2', '2' ); +INSERT INTO t VALUES (3, '1', '3', '2' ); +include/rpl_sync.inc +UPDATE t SET c4 = '7'; +UPDATE t SET c4 = '5' WHERE c1 = 1; +UPDATE t SET c2 = '5' WHERE c1 = 1; +UPDATE t SET c1 = '5' WHERE c1 = 1; +UPDATE t SET c4 = '8' WHERE c2 = '4'; +UPDATE t SET c1 = '8' WHERE c2 = '4'; +UPDATE t SET c2 = '8' WHERE c2 = '4'; +UPDATE t SET c3 = '0' WHERE c4 = NULL; +UPDATE t SET c2 = '0' WHERE c4 = '0'; +UPDATE t SET c2 = '2' WHERE c4 = '2'; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c1 = 7; +DELETE FROM t WHERE c1 = 8; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_full.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_full.result new file mode 100644 index 00000000000..e802156918e --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_full.result @@ -0,0 +1,3505 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +### engines: TokuDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_min.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_min.result new file mode 100644 index 00000000000..368b3b5f938 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_min.result @@ -0,0 +1,3530 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'MINIMAL'; +SET GLOBAL binlog_row_image= 'MINIMAL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image MINIMAL +### engines: TokuDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_noblob.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_noblob.result new file mode 100644 index 00000000000..bb6c3ea1c3e --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_img_idx_noblob.result @@ -0,0 +1,3530 @@ +include/rpl_init.inc [topology=1->2->3] +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'NOBLOB'; +SET GLOBAL binlog_row_image= 'NOBLOB'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image NOBLOB +### engines: TokuDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: TokuDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, TokuDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, TokuDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +### engines: InnoDB, InnoDB, InnoDB +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no keys slaves with no keys as well +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with keys +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with no key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, first slave with key on different field and second slave with key on yet another different field. +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with Key, slaves with PKs on different fields +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, slaves with no keys +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field +CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL, first slave with UK NOT NULL on different field +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with UK NOT NULL and slaves with PK on different fields +CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and no keys on the slaves +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Master with PK and first slave with KEY only +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +SET SQL_LOG_BIN=0; +### Different PKs on master and first slave +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; +CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +SET SQL_LOG_BIN=1; +INSERT INTO t VALUES (1, "a", 10); +INSERT INTO t VALUES (2, "b", 20); +INSERT INTO t VALUES (3, "c", 30); +include/rpl_sync.inc +UPDATE t SET c1=10 WHERE c2="a"; +UPDATE t SET c1=20 WHERE c1=2; +UPDATE t SET c1=30 WHERE c3=30; +UPDATE t SET c3=40 WHERE c1=30; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DELETE FROM t WHERE c2="a"; +DELETE FROM t WHERE c1=20; +DELETE FROM t; +include/rpl_sync.inc +include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] +DROP TABLE t; +include/rpl_sync.inc +CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' +SET SESSION binlog_row_image= 'FULL'; +SET GLOBAL binlog_row_image= 'FULL'; +include/stop_slave.inc +include/start_slave.inc +FLUSH TABLES; +SHOW VARIABLES LIKE 'binlog_row_image'; +Variable_name Value +binlog_row_image FULL +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_log.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_log.result new file mode 100644 index 00000000000..87ffbca71bc --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_log.result @@ -0,0 +1,275 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +include/sync_slave_sql_with_master.inc +include/stop_slave.inc +include/wait_for_slave_to_stop.inc +reset master; +reset slave; +start slave; +include/wait_for_slave_to_start.inc +create table t1(n int not null auto_increment primary key)ENGINE=TokuDB; +insert into t1 values (NULL); +drop table t1; +create table t1 (word char(20) not null)ENGINE=TokuDB; +load data infile 'LOAD_FILE' into table t1 ignore 1 lines; +select count(*) from t1; +count(*) +69 +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +flush logs; +create table t3 (a int)ENGINE=TokuDB; +select * from t1 order by 1 asc; +word +Aarhus +Aaron +Aaron +Ababa +Ababa +aback +aback +abaft +abaft +abandon +abandon +abandoned +abandoned +abandoning +abandoning +abandonment +abandonment +abandons +abandons +abase +abased +abasement +abasements +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abatements +abater +abates +abating +Abba +abbe +abbey +abbeys +abbot +abbots +Abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +Abby +abdomen +abdomens +abdominal +abduct +abducted +abduction +abductions +abductor +abductors +abducts +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberration +include/sync_slave_sql_with_master.inc +select * from t1 order by 1 asc; +word +Aarhus +Aaron +Aaron +Ababa +Ababa +aback +aback +abaft +abaft +abandon +abandon +abandoned +abandoned +abandoning +abandoning +abandonment +abandonment +abandons +abandons +abase +abased +abasement +abasements +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abatements +abater +abates +abating +Abba +abbe +abbey +abbeys +abbot +abbots +Abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +Abby +abdomen +abdomens +abdominal +abduct +abducted +abduction +abductions +abductor +abductors +abducts +Abe +abed +Abel +Abelian +Abelson +Aberdeen +Abernathy +aberrant +aberration +flush logs; +include/stop_slave.inc +include/start_slave.inc +create table t2 (n int)ENGINE=TokuDB; +insert into t2 values (1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +master-bin.000002 # Query # # BEGIN +master-bin.000002 # Table_map # # table_id: # (test.t2) +master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000002 # Xid # # COMMIT /* XID */ +show binary logs; +Log_name File_size +master-bin.000001 # +master-bin.000002 # +include/sync_slave_sql_with_master.inc +show binary logs; +Log_name File_size +slave-bin.000001 # +slave-bin.000002 # +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Table_map # # table_id: # (test.t2) +slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000002 # Xid # # COMMIT /* XID */ +include/check_slave_is_running.inc +show binlog events in 'slave-bin.000005' from 4; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +include/rpl_reset.inc +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_lower_case_table_names.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_lower_case_table_names.result new file mode 100644 index 00000000000..d4a50261d60 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_lower_case_table_names.result @@ -0,0 +1,51 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +******** [ MASTER ] ******** +CREATE DATABASE BUG_37656; +use BUG_37656; +show databases like 'BUG_37656'; +Database (BUG_37656) +BUG_37656 +******** [ SLAVE ] ******** +show databases like 'bug_37656'; +Database (bug_37656) +bug_37656 +******** [ MASTER ] ******** +CREATE TABLE T1 (a int); +CREATE TABLE T2 (b int) ENGINE=TokuDB; +CREATE TABLE T3 (txt TEXT); +show tables; +Tables_in_BUG_37656 +T1 +T2 +T3 +******** [ SLAVE ] ******** +use bug_37656; +show tables; +Tables_in_bug_37656 +t2 +t3 +CREATE TABLE t1 (a INT); +******** [ MASTER ] ******** +use BUG_37656; +INSERT INTO T1 VALUES (1); +INSERT INTO T2 VALUES (1); +use test; +INSERT INTO BUG_37656.T1 VALUES (2); +INSERT INTO BUG_37656.T2 VALUES (2); +LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE BUG_37656.T3; +******** [ SLAVE ] ******** +include/diff_tables.inc [master:BUG_37656.T2, slave:bug_37656.t2] +include/diff_tables.inc [master:BUG_37656.T3, slave:bug_37656.t3] +******** [ MASTER ] ******** +DROP DATABASE BUG_37656; +include/rpl_reset.inc +CREATE DATABASE B50653; +USE B50653; +CREATE PROCEDURE b50653_proc() BEGIN SELECT 1; END; +DROP PROCEDURE b50653_proc; +DROP DATABASE B50653; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp003.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp003.result new file mode 100644 index 00000000000..dc3a8a55741 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp003.result @@ -0,0 +1,60 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +DROP PROCEDURE IF EXISTS test.p1; +DROP PROCEDURE IF EXISTS test.p2; +DROP TABLE IF EXISTS test.t1; +CREATE TABLE test.t1(a INT,PRIMARY KEY(a))ENGINE=TOKUDB; +CREATE PROCEDURE test.p1() +BEGIN +INSERT INTO test.t1 VALUES (4); +SELECT get_lock("test", 100); +UPDATE test.t1 set a=a+4 WHERE a=4; +END| +CREATE PROCEDURE test.p2() +BEGIN +UPDATE test.t1 SET a=a+1; +END| +SELECT get_lock("test", 200); +get_lock("test", 200) +1 +CALL test.p1(); +CALL test.p2(); +SELECT release_lock("test"); +release_lock("test") +1 +get_lock("test", 100) +1 +SELECT release_lock("test"); +release_lock("test") +1 +SELECT * FROM test.t1; +a +5 +include/sync_slave_sql_with_master.inc +SELECT * FROM test.t1; +a +5 +DROP TABLE IF EXISTS test.t1; +CREATE TABLE test.t1(a INT,PRIMARY KEY(a))ENGINE=TOKUDB; +CALL test.p2(); +CALL test.p1(); +get_lock("test", 100) +1 +SELECT release_lock("test"); +release_lock("test") +1 +SELECT * FROM test.t1; +a +8 +include/sync_slave_sql_with_master.inc +SELECT * FROM test.t1; +a +8 +DROP PROCEDURE IF EXISTS test.p1; +DROP PROCEDURE IF EXISTS test.p2; +DROP TABLE IF EXISTS test.t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp006.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp006.result new file mode 100644 index 00000000000..b6fc475eeef --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_row_sp006.result @@ -0,0 +1,47 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS p2; +CREATE TABLE IF NOT EXISTS t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=TokuDB; +CREATE TABLE IF NOT EXISTS t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=TokuDB; +CREATE PROCEDURE p1() +BEGIN +DECLARE done INT DEFAULT 0; +DECLARE spa CHAR(16); +DECLARE spb INT; +DECLARE cur1 CURSOR FOR SELECT name, +(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)--.' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=# +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Query # # use `test`; insert into t2 values (1) +slave-bin.000002 # Xid # # COMMIT /* XID */ +include/check_slave_is_running.inc +show binlog events in 'slave-bin.000005' from 4; +ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +include/rpl_reset.inc +create table t1(a int auto_increment primary key, b int); +insert into t1 values (NULL, 1); +set insert_id=5; +insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Intvar # # INSERT_ID=1 +master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, 1) +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Intvar # # LAST_INSERT_ID=1 +master-bin.000001 # Intvar # # INSERT_ID=5 +master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) +master-bin.000001 # Query # # COMMIT +select * from t1; +a b +1 1 +5 1 +6 1 +drop table t1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_crash_safe.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_crash_safe.result new file mode 100644 index 00000000000..226a2b93140 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_crash_safe.result @@ -0,0 +1,1773 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); +################################################################################### +# PREPARE EXECUTION +################################################################################### +include/stop_slave.inc +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb; +ALTER TABLE mysql.slave_worker_info ENGINE= Innodb; +SHOW CREATE TABLE mysql.slave_relay_log_info; +Table Create Table +slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( + `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', + `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', + `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', + `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', + `Number_of_workers` int(10) unsigned NOT NULL, + `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' +SHOW CREATE TABLE mysql.slave_worker_info; +Table Create Table +slave_worker_info CREATE TABLE `slave_worker_info` ( + `Id` int(10) unsigned NOT NULL, + `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Relay_log_pos` bigint(20) unsigned NOT NULL, + `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, + `Checkpoint_seqno` int(10) unsigned NOT NULL, + `Checkpoint_group_size` int(10) unsigned NOT NULL, + `Checkpoint_group_bitmap` blob NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' +include/start_slave.inc +rpl_mixing_engines.inc [commands=configure] +CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; +CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; +INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1); +INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1); +CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +END| +CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_tt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); +RETURN "fc_i_nt_5_suc"; +END| +CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); +RETURN "fc_i_nt_3_tt_3_suc"; +END| +CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id; +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW +BEGIN +DECLARE in_stmt_id INTEGER; +SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id; +SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); +INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); +END| +################################################################################### +# EXECUTE CASES CRASHING THE XID +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (9, 1); +fc_i_tt_5_suc (9, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (10, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (12, 4); +fc_i_tt_5_suc (12, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(12,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(12,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (13, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (15, 2); +fc_i_tt_5_suc (15, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_apply";; +FAILURE d,crash_after_apply and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (16, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (19, 1); +fc_i_tt_5_suc (19, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(19,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(19,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (20, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (22, 4); +fc_i_tt_5_suc (22, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(22,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(22,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (23, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (25, 2); +fc_i_tt_5_suc (25, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(25,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(25,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_before_update_pos";; +FAILURE d,crash_before_update_pos and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (26, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (29, 1); +fc_i_tt_5_suc (29, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(29,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(29,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (30, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (32, 4); +fc_i_tt_5_suc (32, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(32,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(32,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (33, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (35, 2); +fc_i_tt_5_suc (35, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_update_pos_before_apply";; +FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (36, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T] +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-func] +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (39, 1); +fc_i_tt_5_suc (39, 1) +fc_i_tt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=T-proc] +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (40, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-trig C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-func C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (42, 4); +fc_i_tt_5_suc (42, 4) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(42,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2) +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(42,4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T T-proc C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (43, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-trig T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-func T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_tt_5_suc (45, 2); +fc_i_tt_5_suc (45, 2) +fc_i_tt_5_suc +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_before_update_pos";; +FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=B T-proc T C] +-b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- +BEGIN; +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- +CALL pc_i_tt_5_suc (46, 2); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4); +include/show_binlog_events.inc +-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- +COMMIT; +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1)) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1) + 1) +master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +-e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# EXECUTE CASES CRASHING THE BEGIN/COMMIT +################################################################################### + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N] +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-trig] +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1); +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc + + + +STOP SLAVE SQL_THREAD; +include/wait_for_slave_sql_to_stop.inc +SET GLOBAL debug="d,crash_after_commit_and_update_pos";; +FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 +rpl_mixing_engines.inc [commands=N-func] +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +SELECT fc_i_nt_5_suc (49, 1); +fc_i_nt_5_suc (49, 1) +fc_i_nt_5_suc +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(49,1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- +-b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- +include/show_binlog_events.inc +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(49,1) +master-bin.000001 # Query # # COMMIT +-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- + +include/rpl_reconnect.inc +START SLAVE; +include/wait_for_slave_to_start.inc +################################################################################### +# CHECK CONSISTENCY +################################################################################### +include/sync_slave_sql_with_master.inc +################################################################################### +# CLEAN +################################################################################### +rpl_mixing_engines.inc [commands=clean] +DROP TABLE tt_1; +DROP TABLE tt_2; +DROP TABLE tt_3; +DROP TABLE tt_4; +DROP TABLE tt_5; +DROP TABLE tt_6; +DROP TABLE nt_1; +DROP TABLE nt_2; +DROP TABLE nt_3; +DROP TABLE nt_4; +DROP TABLE nt_5; +DROP TABLE nt_6; +DROP PROCEDURE pc_i_tt_5_suc; +DROP PROCEDURE pc_i_nt_5_suc; +DROP FUNCTION fc_i_tt_5_suc; +DROP FUNCTION fc_i_nt_5_suc; +DROP FUNCTION fc_i_nt_3_tt_3_suc; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result new file mode 100644 index 00000000000..e3d83733ed0 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result @@ -0,0 +1,48 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +******** [ MASTER ] ******** +CREATE DATABASE BUG_37656; +use BUG_37656; +show databases like 'BUG_37656'; +Database (BUG_37656) +BUG_37656 +******** [ SLAVE ] ******** +show databases like 'bug_37656'; +Database (bug_37656) +bug_37656 +******** [ MASTER ] ******** +CREATE TABLE T1 (a int); +CREATE TABLE T2 (b int) ENGINE=TokuDB; +CREATE TABLE T3 (txt TEXT); +show tables; +Tables_in_BUG_37656 +T1 +T2 +T3 +******** [ SLAVE ] ******** +use bug_37656; +show tables; +Tables_in_bug_37656 +t2 +t3 +CREATE TABLE t1 (a INT); +******** [ MASTER ] ******** +use BUG_37656; +INSERT INTO T1 VALUES (1); +INSERT INTO T2 VALUES (1); +LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE BUG_37656.T3; +******** [ SLAVE ] ******** +include/diff_tables.inc [master:BUG_37656.T2, slave:bug_37656.t2] +include/diff_tables.inc [master:BUG_37656.T3, slave:bug_37656.t3] +******** [ MASTER ] ******** +DROP DATABASE BUG_37656; +include/rpl_reset.inc +CREATE DATABASE B50653; +USE B50653; +CREATE PROCEDURE b50653_proc() BEGIN SELECT 1; END; +DROP PROCEDURE b50653_proc; +DROP DATABASE B50653; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result new file mode 100644 index 00000000000..50f43ebe5bf --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows OFF +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +1 +select * from t; +a b +1 3 +2 2 +3 5 +4 3 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result new file mode 100644 index 00000000000..9e7f932a3c9 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +0 +select * from t; +a b +1 3 +2 2 +3 5 +4 3 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result new file mode 100644 index 00000000000..348734b206d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows OFF +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks ON +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +0 +select * from t; +a b +1 3 +2 2 +3 5 +4 3 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result new file mode 100644 index 00000000000..bfd640e52e9 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks ON +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +0 +select * from t; +a b +1 3 +2 2 +3 5 +4 3 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result new file mode 100644 index 00000000000..faf969f851a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows OFF +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=tokudb; +insert into t values (1,0,-1); +insert into t values (2,0,-2),(3,0,-3); +insert into t values (4,0,-4); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +1 +select * from t; +a b c +1 3 -1 +2 2 -2 +3 5 -3 +4 3 -4 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result new file mode 100644 index 00000000000..9ac87512f80 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result @@ -0,0 +1,37 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_%'; +Variable_name Value +tokudb_rpl_check_readonly ON +tokudb_rpl_lookup_rows ON +tokudb_rpl_lookup_rows_delay 10000 +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=tokudb; +insert into t values (1,0,-1); +insert into t values (2,0,-2),(3,0,-3); +insert into t values (4,0,-4); +include/diff_tables.inc [master:test.t, slave:test.t] +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; +@tend-@tstart <= 5 +0 +select * from t; +a b c +1 3 -1 +2 2 -2 +3 5 -3 +4 3 -4 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk.result new file mode 100644 index 00000000000..ea1b84f8138 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk.result @@ -0,0 +1,21 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_unique_checks%'; +Variable_name Value +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk_uc1.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk_uc1.result new file mode 100644 index 00000000000..c846ec81612 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_pk_uc1.result @@ -0,0 +1,21 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_unique_checks%'; +Variable_name Value +tokudb_rpl_unique_checks ON +tokudb_rpl_unique_checks_delay 10000 +create table t (a bigint not null, primary key(a)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +0 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique.result new file mode 100644 index 00000000000..808303387d5 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique.result @@ -0,0 +1,21 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_unique_checks%'; +Variable_name Value +tokudb_rpl_unique_checks OFF +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1,2); +insert into t values (2,3),(3,4); +insert into t values (4,5); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +1 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique_uc1.result b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique_uc1.result new file mode 100644 index 00000000000..a40548cec62 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_tokudb_write_unique_uc1.result @@ -0,0 +1,21 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +drop table if exists t; +show variables like 'tokudb_rpl_unique_checks%'; +Variable_name Value +tokudb_rpl_unique_checks ON +tokudb_rpl_unique_checks_delay 5000 +create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=tokudb; +select unix_timestamp() into @tstart; +insert into t values (1,2); +insert into t values (2,3),(3,4); +insert into t values (4,5); +select unix_timestamp()-@tstart <= 10; +unix_timestamp()-@tstart <= 10 +0 +include/diff_tables.inc [master:test.t, slave:test.t] +drop table if exists t; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_truncate_3tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_truncate_3tokudb.result new file mode 100644 index 00000000000..8c2fec847a9 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_truncate_3tokudb.result @@ -0,0 +1,48 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +include/rpl_reset.inc +**** On Master **** +CREATE TABLE t1 (a INT, b LONG) ENGINE=TokuDB; +INSERT INTO t1 VALUES (1,1), (2,2); +include/sync_slave_sql_with_master.inc +**** On Master **** +TRUNCATE TABLE t1; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +==== Test using a table with delete triggers ==== +**** On Master **** +SET @count := 1; +CREATE TABLE t2 (a INT, b LONG) ENGINE=TokuDB; +CREATE TRIGGER trg1 BEFORE DELETE ON t1 FOR EACH ROW SET @count := @count + 1; +include/sync_slave_sql_with_master.inc +**** On Master **** +TRUNCATE TABLE t1; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t2, slave:t2] +DROP TABLE t1,t2; +include/sync_slave_sql_with_master.inc +include/rpl_reset.inc +**** On Master **** +CREATE TABLE t1 (a INT, b LONG) ENGINE=TokuDB; +INSERT INTO t1 VALUES (1,1), (2,2); +include/sync_slave_sql_with_master.inc +**** On Master **** +DELETE FROM t1; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t1, slave:t1] +==== Test using a table with delete triggers ==== +**** On Master **** +SET @count := 1; +CREATE TABLE t2 (a INT, b LONG) ENGINE=TokuDB; +CREATE TRIGGER trg1 BEFORE DELETE ON t1 FOR EACH ROW SET @count := @count + 1; +include/sync_slave_sql_with_master.inc +**** On Master **** +DELETE FROM t1; +include/sync_slave_sql_with_master.inc +include/diff_tables.inc [master:t2, slave:t2] +DROP TABLE t1,t2; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/rpl_typeconv_tokudb.result b/storage/tokudb/mysql-test/rpl/r/rpl_typeconv_tokudb.result new file mode 100644 index 00000000000..426c5dbeb3f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/rpl_typeconv_tokudb.result @@ -0,0 +1,13 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = ''; +CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=TokuDB; +INSERT INTO t1 VALUES (b'0', b'01', b'101'); +include/diff_tables.inc [master:t1, slave:t1] +DROP TABLE t1; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/r/tokudb_innodb_xa_crash.result b/storage/tokudb/mysql-test/rpl/r/tokudb_innodb_xa_crash.result new file mode 100644 index 00000000000..add5e6b9529 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/r/tokudb_innodb_xa_crash.result @@ -0,0 +1,16 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE t1(`a` INT) ENGINE=TokuDB; +CREATE TABLE t2(`a` INT) ENGINE=InnoDB; +begin; +insert into t1 values (1); +insert into t2 values (1); +commit; +TABLES t1 and t2 must be equal otherwise an error will be thrown. +include/diff_tables.inc [master:test.t1, slave:test.t1] +include/diff_tables.inc [master:test.t2, slave:test.t2] +drop table t1,t2; +include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/disabled.def b/storage/tokudb/mysql-test/rpl/t/disabled.def new file mode 100644 index 00000000000..30bc9fea7c5 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/disabled.def @@ -0,0 +1 @@ +rpl_row_sp002_tokudb : tokudb does not support foreign keys diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb-slave.opt new file mode 100644 index 00000000000..3819e7c3f7b --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb-slave.opt @@ -0,0 +1 @@ +--innodb_lock_wait_timeout=4 --slave-transaction-retries=2 --max-relay-log-size=4096 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb.test new file mode 100644 index 00000000000..86d28a12ad3 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_deadlock_tokudb.test @@ -0,0 +1,8 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/not_mts_slave_parallel_workers.inc +-- source include/not_relay_log_info_table.inc +-- source include/not_master_info_table.inc + +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_deadlock.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_extra_col_master_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_extra_col_master_tokudb.test new file mode 100644 index 00000000000..4ee8fd38010 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_extra_col_master_tokudb.test @@ -0,0 +1,11 @@ +############################################################# +# Purpose: To test having extra columns on the master WL#3915 +############################################################# +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +-- source include/have_tokudb.inc + +let $engine_type=TokuDB; +--source extra/rpl_tests/rpl_extra_col_master.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_extra_col_slave_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_extra_col_slave_tokudb.test new file mode 100644 index 00000000000..b3d157a513d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_extra_col_slave_tokudb.test @@ -0,0 +1,7 @@ +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc + +let $engine_type='TokuDB'; +-- source extra/rpl_tests/rpl_extra_col_slave.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_mixed_row_tokudb-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_mixed_row_tokudb-master.opt new file mode 100644 index 00000000000..96f0ce3f36c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_mixed_row_tokudb-master.opt @@ -0,0 +1 @@ +--default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_not_null_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_not_null_tokudb.test new file mode 100644 index 00000000000..53cf555ce64 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_not_null_tokudb.test @@ -0,0 +1,20 @@ +################################################################################# +# This test checks if the replication between "null" fields to either "null" +# fields or "not null" fields works properly. In the first case, the execution +# should work fine. In the second case, it may fail according to the sql_mode +# being used. +# +# The test is devided in three main parts: +# +# 1 - NULL --> NULL (no failures) +# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures) +# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) +# +################################################################################# +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +let $engine=TokuDB; +--source extra/rpl_tests/rpl_not_null.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-master.opt new file mode 100644 index 00000000000..4426a9c9746 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-master.opt @@ -0,0 +1 @@ +--log-warnings=0 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-slave.opt new file mode 100644 index 00000000000..b351df53683 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb-slave.opt @@ -0,0 +1,5 @@ +--log-warnings=0 --slave-transaction-retries=0 + + + + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb.test new file mode 100644 index 00000000000..23d2d6cdf51 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb.test @@ -0,0 +1,16 @@ +--source include/have_tokudb.inc +#Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc +# +# WL#5569 MTS +# +# The test is similar to rpl_parallel (see further instruction there) but +# checks and provides benchmarking data with load to innodb tables. +# + +--source include/master-slave.inc + +connection master; +source extra/rpl_tests/rpl_parallel_load_tokudb.test; + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt new file mode 100644 index 00000000000..042156e63d1 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt @@ -0,0 +1,2 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF --slave-parallel-workers=2 + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk.test b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk.test new file mode 100644 index 00000000000..bedeb9513be --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_delete_pk.test @@ -0,0 +1,63 @@ +# test replicated delete rows log events on a table with a primary key. +# the slave is read only with tokudb rpl row lookups OFF. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +delete from t where a=2; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt new file mode 100644 index 00000000000..fffefff5bcd --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF --slave-parallel-workers=2 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test new file mode 100644 index 00000000000..6dd9b660eed --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test @@ -0,0 +1,70 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk-slave.opt new file mode 100644 index 00000000000..f2ed0286136 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk-slave.opt @@ -0,0 +1,2 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF --slave-parallel-workers=2 + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk.test b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk.test new file mode 100644 index 00000000000..0ed12b34e1f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_parallel_tokudb_write_pk.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_unique_checks%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb-master.opt new file mode 100644 index 00000000000..0eed7aaadad --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb-master.opt @@ -0,0 +1 @@ +--innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb.test new file mode 100644 index 00000000000..a80363cc91d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_partition_tokudb.test @@ -0,0 +1,12 @@ +# Test of partitioning features with replication for InnoDB +--source include/have_tokudb.inc +--source include/have_partition.inc +--source include/master-slave.inc + +# Set the default connection to 'master' + +let $engine_type=TokuDB; + +--source suite/rpl/include/rpl_partition.inc + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_relay_space_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_relay_space_tokudb.test new file mode 100644 index 00000000000..232ec944c16 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_relay_space_tokudb.test @@ -0,0 +1,4 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_sv_relay_space.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt new file mode 100644 index 00000000000..c87bbb62418 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt @@ -0,0 +1 @@ +--read-only=true --loose-tokudb-rpl-unique-checks=false --loose-tokudb-rpl-lookup-rows=false diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence.test b/storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence.test new file mode 100644 index 00000000000..67e77c1511c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_rfr_disable_on_expl_pk_absence.test @@ -0,0 +1,48 @@ +# Test case for bug#1536663 +# +# When read-free-replication is enabled for tokudb and there is no explicit +# pk for replicated table there can be dublicated records in the table on +# update operation. +# +# Consider this update operation: +# UPDATE t SET a = a + 10 WHERE b = 'b'; +# The master does rows lookup and updates the rows which values correspond to +# the condition. The update events are written to binary log with +# rows values from the master. As rows lookup is forbidden for slave +# the new rows are added instead of updating corresponding rows. +# +# Without the fix there will be several rows with b = 'b' in the table on slave +# instead of one updated row. +# + +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +call mtr.add_suppression("read free replication is disabled for tokudb table"); + +--connection master +CREATE TABLE t (a int(11), b char(20)) ENGINE = TokuDB; +INSERT INTO t (a, b) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'); + +--sync_slave_with_master +--sorted_result +SELECT * FROM t; + +--let $i = 2 +--while($i) { + --dec $i + --connection master + UPDATE t SET a = a + 10 WHERE b = 'b'; + --sorted_result + SELECT * FROM t; + --sync_slave_with_master + --sorted_result + SELECT * FROM t; +} + +--connection master +DROP TABLE t; +--sync_slave_with_master + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_basic_3tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_basic_3tokudb.test new file mode 100644 index 00000000000..4c38646b112 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_basic_3tokudb.test @@ -0,0 +1,11 @@ +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +connection slave; +let $bit_field_special = ALL_LOSSY; +let $type = 'TokuDB'; +let $extra_index = ; +--source extra/rpl_tests/rpl_row_basic.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_blob_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_blob_tokudb.test new file mode 100644 index 00000000000..b96219a0c50 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_blob_tokudb.test @@ -0,0 +1,15 @@ +################################# +# Wrapper for rpl_row_blob.test# +################################# +######################################################## +# By JBM 2005-02-15 Wrapped to allow reuse of test code# +# Added to skip if ndb is default # +######################################################## +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_row_blob.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb-master.opt new file mode 100644 index 00000000000..773ec62bef2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb-master.opt @@ -0,0 +1,2 @@ +--skip-external-locking +--default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb.test new file mode 100644 index 00000000000..bc624d4d89c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_log_tokudb.test @@ -0,0 +1,15 @@ +################################### +# Wrapper for rpl_row_log.test # +# Added wrapper so that MyISAM & # +# Innodb and NDB could all use the# +# Same test. NDB produced a diff # +# bin-log # +################################### +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_log.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_rec_comp_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_rec_comp_tokudb.test new file mode 100644 index 00000000000..8d84de1df7d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_rec_comp_tokudb.test @@ -0,0 +1,11 @@ +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +-- source include/have_tokudb.inc + +# +# BUG#52868 Wrong handling of NULL value during update, replication out of sync +# + +-- let $engine= TokuDB +-- source extra/rpl_tests/rpl_record_compare.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_sp002_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_sp002_tokudb.test new file mode 100644 index 00000000000..82c1e17f488 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_sp002_tokudb.test @@ -0,0 +1,4 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_row_sp002.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_sp007_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_sp007_tokudb.test new file mode 100644 index 00000000000..6deaa68d23e --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_sp007_tokudb.test @@ -0,0 +1,4 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_row_sp007.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_row_tabledefs_3tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_row_tabledefs_3tokudb.test new file mode 100644 index 00000000000..e4558d0e87a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_row_tabledefs_3tokudb.test @@ -0,0 +1,10 @@ + +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc + +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_row_tabledefs.test + + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_set_null_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_set_null_tokudb.test new file mode 100644 index 00000000000..78ae341b29f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_set_null_tokudb.test @@ -0,0 +1,7 @@ +-- source include/have_binlog_format_mixed_or_row.inc +-- source include/master-slave.inc +-- source include/have_tokudb.inc + +-- let $engine= TokuDB +-- source extra/rpl_tests/rpl_set_null.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_stm_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_stm_tokudb.test new file mode 100644 index 00000000000..72daaefd3fb --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_stm_tokudb.test @@ -0,0 +1,11 @@ +# File for specialities regarding replication from or to InnoDB +# tables. + +source include/master-slave.inc; +source include/have_tokudb.inc; +source include/have_binlog_format_statement.inc; +# gtids disabled because it tests DROP TEMPORARY inside a transaction +source include/not_gtid_enabled.inc; + +source extra/rpl_tests/rpl_tokudb.test; +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb-master.opt new file mode 100644 index 00000000000..0eed7aaadad --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb-master.opt @@ -0,0 +1 @@ +--innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-master.opt new file mode 100644 index 00000000000..0eed7aaadad --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-master.opt @@ -0,0 +1 @@ +--innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-slave.opt new file mode 100644 index 00000000000..0eed7aaadad --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430-slave.opt @@ -0,0 +1 @@ +--innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430.test new file mode 100644 index 00000000000..4cc7f032db9 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug28430.test @@ -0,0 +1,159 @@ +#Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc + +--source include/have_tokudb.inc +--source include/have_partition.inc +--source include/have_binlog_format_mixed_or_row.inc +--source include/master-slave.inc + +# Set the default connection to 'master' + +--vertical_results + +let $engine_type=TokuDB; + +######## Creat Table Section ######### +use test; + +eval CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, + dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON + UPDATE CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, + fkid MEDIUMINT, filler VARCHAR(255), + PRIMARY KEY(id)) ENGINE=$engine_type; + +eval CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, + dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE + CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, + fkid MEDIUMINT, filler VARCHAR(255), + PRIMARY KEY(id)) ENGINE=$engine_type + PARTITION BY KEY(id) partitions 5; + +eval CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, + dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE + CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, + fkid MEDIUMINT, filler VARCHAR(255), + PRIMARY KEY(id)) ENGINE=$engine_type + PARTITION BY RANGE(id) + SUBPARTITION BY hash(id) subpartitions 2 + (PARTITION pa1 values less than (10), + PARTITION pa2 values less than (20), + PARTITION pa3 values less than (30), + PARTITION pa4 values less than (40), + PARTITION pa5 values less than (50), + PARTITION pa6 values less than (60), + PARTITION pa7 values less than (70), + PARTITION pa8 values less than (80), + PARTITION pa9 values less than (90), + PARTITION pa10 values less than (100), + PARTITION pa11 values less than MAXVALUE); + +######## Create SPs, Functions, Views and Triggers Section ############## + +delimiter |; +CREATE PROCEDURE test.proc_norm() +BEGIN + DECLARE ins_count INT DEFAULT 1000; + DECLARE del_count INT; + DECLARE cur_user VARCHAR(255); + DECLARE local_uuid VARCHAR(255); + DECLARE local_time TIMESTAMP; + + SET local_time= NOW(); + SET cur_user= CURRENT_USER(); + SET local_uuid= UUID(); + + WHILE ins_count > 0 DO + INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), + ins_count,'Going to test MBR for MySQL'); + SET ins_count = ins_count - 1; + END WHILE; + + SELECT MAX(id) FROM test.regular_tbl INTO del_count; + WHILE del_count > 0 DO + DELETE FROM test.regular_tbl WHERE id = del_count; + SET del_count = del_count - 2; + END WHILE; +END| + +CREATE PROCEDURE test.proc_bykey() +BEGIN + DECLARE ins_count INT DEFAULT 1000; + DECLARE del_count INT; + DECLARE cur_user VARCHAR(255); + DECLARE local_uuid VARCHAR(255); + DECLARE local_time TIMESTAMP; + + SET local_time= NOW(); + SET cur_user= CURRENT_USER(); + SET local_uuid= UUID(); + + WHILE ins_count > 0 DO + INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(), + ins_count,'Going to test MBR for MySQL'); + SET ins_count = ins_count - 1; + END WHILE; + + SELECT MAX(id) FROM test.bykey_tbl INTO del_count; + WHILE del_count > 0 DO + DELETE FROM test.bykey_tbl WHERE id = del_count; + SET del_count = del_count - 2; + END WHILE; +END| + +CREATE PROCEDURE test.proc_byrange() +BEGIN + DECLARE ins_count INT DEFAULT 1000; + DECLARE del_count INT; + DECLARE cur_user VARCHAR(255); + DECLARE local_uuid VARCHAR(255); + DECLARE local_time TIMESTAMP; + + SET local_time= NOW(); + SET cur_user = CURRENT_USER(); + SET local_uuid=UUID(); + + WHILE ins_count > 0 DO + INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(), + ins_count,'Going to test MBR for MySQL'); + SET ins_count = ins_count - 1; + END WHILE; + + SELECT MAX(id) FROM test.byrange_tbl INTO del_count; + WHILE del_count > 0 DO + DELETE FROM test.byrange_tbl WHERE id = del_count; + SET del_count = del_count - 2; + END WHILE; +END| + +delimiter ;| + +############ Finish Setup Section ################### + + +############ Test Section ################### + +CALL test.proc_norm(); +SELECT count(*) as "Master regular" FROM test.regular_tbl; +CALL test.proc_bykey(); +SELECT count(*) as "Master bykey" FROM test.bykey_tbl; +CALL test.proc_byrange(); +SELECT count(*) as "Master byrange" FROM test.byrange_tbl; + +--sync_slave_with_master +connection slave; +show create table test.byrange_tbl; +SELECT count(*) "Slave norm" FROM test.regular_tbl; +SELECT count(*) "Slave bykey" FROM test.bykey_tbl; +SELECT count(*) "Slave byrange" FROM test.byrange_tbl; + +###### CLEAN UP SECTION ############## + +connection master; +DROP PROCEDURE test.proc_norm; +DROP PROCEDURE test.proc_bykey; +DROP PROCEDURE test.proc_byrange; +DROP TABLE test.regular_tbl; +DROP TABLE test.bykey_tbl; +DROP TABLE test.byrange_tbl; + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug30888.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug30888.test new file mode 100644 index 00000000000..406e9c2a63a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_bug30888.test @@ -0,0 +1,66 @@ +--source include/have_tokudb.inc +--source include/have_binlog_format_mixed_or_row.inc +--source include/master-slave.inc + +# Set the default connection to 'master' + +--vertical_results + +#let $engine_type=TokuDB; +let $engine_type=TokuDB; + +######## Creat Table Section ######### +use test; + +eval CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, + dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB, + fkid MEDIUMINT, filler VARCHAR(255), + PRIMARY KEY(id)) ENGINE=$engine_type; + +######## Create SPs, Functions, Views and Triggers Section ############## + +delimiter |; +CREATE PROCEDURE test.proc_norm() +BEGIN + DECLARE ins_count INT DEFAULT 1000; + DECLARE del_count INT; + DECLARE cur_user VARCHAR(255); + DECLARE local_uuid VARCHAR(255); + DECLARE local_time TIMESTAMP; + + SET local_time= NOW(); + SET cur_user= CURRENT_USER(); + SET local_uuid= UUID(); + + WHILE ins_count > 0 DO + INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), + ins_count,'Going to test MBR for MySQL'); + SET ins_count = ins_count - 1; + END WHILE; + + SELECT MAX(id) FROM test.regular_tbl INTO del_count; + WHILE del_count > 0 DO + DELETE FROM test.regular_tbl WHERE id = del_count; + SET del_count = del_count - 2; + END WHILE; +END| + +delimiter ;| + +############ Finish Setup Section ################### + + +############ Test Section ################### + +CALL test.proc_norm(); + +--sync_slave_with_master + +###### CLEAN UP SECTION ############## + +connection master; +DROP PROCEDURE test.proc_norm; +DROP TABLE test.regular_tbl; + +--source include/rpl_end.inc + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_commit_after_flush.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_commit_after_flush.test new file mode 100644 index 00000000000..783bee20307 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_commit_after_flush.test @@ -0,0 +1,6 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=tokudb; +-- source extra/rpl_tests/rpl_commit_after_flush.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk-slave.opt new file mode 100644 index 00000000000..93a2685e847 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk.test new file mode 100644 index 00000000000..bedeb9513be --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk.test @@ -0,0 +1,63 @@ +# test replicated delete rows log events on a table with a primary key. +# the slave is read only with tokudb rpl row lookups OFF. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +delete from t where a=2; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt new file mode 100644 index 00000000000..9a2fec628f9 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=0 --loose-tokudb-rpl-unique-checks=ON --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1.test new file mode 100644 index 00000000000..9e9aaede416 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_delete_pk_lookup1.test @@ -0,0 +1,66 @@ +# test replicated delete rows log events on a table with a primary key. +# the slave is read only with tokudb rpl row lookups ON. +# this will cause SLOW deletes. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +delete from t where a=2; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart > 5; # assert big delay in the delete time + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-master.opt new file mode 100644 index 00000000000..d03d176150d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-master.opt @@ -0,0 +1 @@ +${?PB_HOST_SPECIFIC_MYSQLD_ARGS} diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-slave.opt new file mode 100644 index 00000000000..d03d176150d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id-slave.opt @@ -0,0 +1 @@ +${?PB_HOST_SPECIFIC_MYSQLD_ARGS} diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id.test new file mode 100644 index 00000000000..b14aba2263f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id.test @@ -0,0 +1,7 @@ +################################# +# Wrapper for rpl_insert_id.test# +################################# +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=tokudb; +-- source extra/rpl_tests/rpl_insert_id.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id_pk.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id_pk.test new file mode 100644 index 00000000000..f0302114e5a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_insert_id_pk.test @@ -0,0 +1,7 @@ +################################# +# Wrapper for rpl_insert_id.test# +################################# +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=tokudb; +-- source extra/rpl_tests/rpl_insert_id_pk.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_ddl.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_ddl.test new file mode 100644 index 00000000000..5614769307d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_ddl.test @@ -0,0 +1,9 @@ +######################################### +# Purpose: testing the replication in mixed mode +# Requirements: define binlog format for mysqld as in example below: +# ./mysql-test-run.pl --mysqld=--binlog-format=mixed +######################################### +--source include/have_binlog_format_mixed.inc +--source include/have_tokudb.inc +let $engine_type=TokuDB; +--source suite/rpl/include/rpl_mixed_ddl.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_dml.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_dml.test new file mode 100644 index 00000000000..6147d321784 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_mixed_dml.test @@ -0,0 +1,12 @@ +######################################### +# Purpose: testing the replication in mixed mode +# Requirements: define binlog format for mysqld as in example below: +# ./mysql-test-run.pl --mysqld=--binlog-format=mixed +######################################### +--source include/have_binlog_format_mixed.inc +--source include/have_tokudb.inc +let $engine_type=TokuDB; + +SET SESSION tokudb_pk_insert_mode = 2; + +--source suite/rpl/include/rpl_mixed_dml.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update.test new file mode 100644 index 00000000000..06a760ca2a8 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update.test @@ -0,0 +1,4 @@ +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_multi_update.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2-slave.opt new file mode 100644 index 00000000000..17d4171af0e --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2-slave.opt @@ -0,0 +1 @@ +--replicate-ignore-table=nothing.sensible diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2.test new file mode 100644 index 00000000000..729895d1bbb --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update2.test @@ -0,0 +1,14 @@ +####################################################### +# Wrapper for rpl_multi_update2.test to allow multi # +# Engines to reuse test code. By JBM 2006-02-15 # +# Added comments section and to skip when ndb is # +# Default engine. # +####################################################### +--source include/not_gtid_enabled.inc +--source include/not_ndb_default.inc +--source include/have_tokudb.inc +--source include/master-slave.inc +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT'); +let $engine_type=TokuDB; +--source extra/rpl_tests/rpl_multi_update2.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update3.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update3.test new file mode 100644 index 00000000000..18a906664a0 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_multi_update3.test @@ -0,0 +1,13 @@ +####################################################### +# Wrapper for rpl_multi_update3.test to allow multi # +# Engines to reuse test code. By JBM 2006-02-15 # +# Added comments section and to skip when ndb is # +# Default engine. # +####################################################### +--source include/have_tokudb.inc +--source include/not_ndb_default.inc +--source include/master-slave.inc +call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); +let $engine_type=TokuDB; +--source extra/rpl_tests/rpl_multi_update3.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff-slave.opt new file mode 100644 index 00000000000..0240c9d6ae4 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff-slave.opt @@ -0,0 +1 @@ +--read-only=OFF --loose-tokudb-rpl-check-readonly=OFF --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff.test new file mode 100644 index 00000000000..7b3e8f0c0d3 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ff.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft-slave.opt new file mode 100644 index 00000000000..e1ee193d4c1 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft-slave.opt @@ -0,0 +1 @@ +--read-only=OFF --loose-tokudb-rpl-check-readonly=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft.test new file mode 100644 index 00000000000..7b3e8f0c0d3 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_ft.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf-slave.opt new file mode 100644 index 00000000000..e60afd0380a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-check-readonly=OFF --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf.test new file mode 100644 index 00000000000..7b3e8f0c0d3 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tf.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt-slave.opt new file mode 100644 index 00000000000..f6658646e65 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-check-readonly=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt.test new file mode 100644 index 00000000000..7b3e8f0c0d3 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_read_only_tt.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table-slave.opt new file mode 100644 index 00000000000..2a7ec2590cc --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table.test new file mode 100644 index 00000000000..319e741e12c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_rfr_partition_table.test @@ -0,0 +1,74 @@ +# test tokudb read free replication feature with partition table + +--source include/have_debug.inc +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +call mtr.add_suppression(".*read free replication is disabled for TokuDB table.*continue with rows lookup"); + +connection master; + +# partition table with explicit PK +CREATE TABLE t1 (id int(11) NOT NULL, pid int(11), PRIMARY KEY (id)) ENGINE=TokuDB +PARTITION BY RANGE (id) +(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, + PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, + PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); + +insert into t1 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); + +# partition table without explicit PK +CREATE TABLE t2 (id int(11) NOT NULL, pid int(11), key idx_1(id)) ENGINE=TokuDB +PARTITION BY RANGE (id) +(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, + PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, + PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); + +insert into t2 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); + +--sync_slave_with_master + +# set tokudb rfr crash/assert conditions if we enter lookup code +# to make sure no unique checks or row lookups is invoked +connection slave; +--source include/stop_slave.inc +let $saved_debug = `select @@debug`; +set global debug= "+d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; +--source include/start_slave.inc + +connection master; +insert into t1 values(21, 21); +delete from t1 where id = 11; +update t1 set pid = 2 where id = 1; + +sync_slave_with_master; + +connection master; + +--let $diff_tables= master:test.t1, slave:test.t1 +--source include/diff_tables.inc + +# print rfr disabled warning in errlog +connection master; +insert into t2 values(21, 21); +delete from t2 where id = 11; +update t2 set pid = 2 where id = 1; + +sync_slave_with_master; + +--let $diff_tables= master:test.t2, slave:test.t2 +--source include/diff_tables.inc + +connection master; +drop table t1; +drop table t2; +sync_slave_with_master; + +connection slave; +--source include/stop_slave.inc +set global debug= "-d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; +set global debug= @saved_debug; +--source include/start_slave.inc + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-master.opt new file mode 100644 index 00000000000..e980c2de7ff --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-master.opt @@ -0,0 +1 @@ +--transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-slave.opt new file mode 100644 index 00000000000..264c5c1a4b4 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe-slave.opt @@ -0,0 +1 @@ +--skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1 --transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe.test new file mode 100644 index 00000000000..6bd79691528 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_crash_safe.test @@ -0,0 +1,19 @@ +# This test takes long time, so only run it with the --big-test mtr-flag. +--source include/big_test.inc +--source include/not_embedded.inc +--source include/not_valgrind.inc +--source include/have_debug.inc +--source include/have_tokudb.inc +--source include/have_binlog_format_row.inc +--source include/not_mts_slave_parallel_workers.inc +--source include/master-slave.inc + +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); + +let $engine_type=TokuDB; +let $database_name=test; +--source extra/rpl_tests/rpl_crash_safe.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test new file mode 100644 index 00000000000..a52e96dc19d --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test @@ -0,0 +1,53 @@ +#Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc + +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +# +# This file contains tests for WL#5096. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +# +# WL#5096 Tests. +# + +# +# Tests combinations of binlog-row-image against mixes of MyISAM and InnoDB +# storage engines on all three servers. +# +# All the combinarions need not to be separated into their own files as +# the tests for indexes and engines mixes are, because noblobs test script +# does not take too long time, thence we do not risk triggering PB2 timeout +# on valgrind runs. +# + +## NOBLOB + +-- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +## MINIMAL + +-- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +## FULL + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test new file mode 100644 index 00000000000..cfbc6519182 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test @@ -0,0 +1,50 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096 and bug fixes. +# + +-- source include/have_binlog_format_row.inc +-- source include/not_gtid_enabled.inc + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests for different storage engines on each server, +# but same index structure on tables. The tests are conducted +# using FULL binlog-row-image on all servers. +# + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +# +# BUG#49100 +# + +-- echo ### Testing with TokuDB storage engine + +-- let $engine=TokuDB +-- source extra/rpl_tests/rpl_row_empty_imgs.test + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test new file mode 100644 index 00000000000..4c832208feb --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test @@ -0,0 +1,42 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096 and bug fixes. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests for different storage engines on each server, +# but same index structure on tables. The tests are conducted +# using MINIMAL binlog-row-image on all servers. +# + +-- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test new file mode 100644 index 00000000000..00b6448ad72 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test @@ -0,0 +1,42 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096 and bug fixes. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests for different storage engines on each server, +# but same index structure on tables. The tests are conducted +# using NOBLOB binlog-row-image on all servers. +# + +-- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test new file mode 100644 index 00000000000..6f683776c3c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test @@ -0,0 +1,38 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 Tests. +# + +# +# Tests FULL image against a mix of MyISAM and InnoDB engines on +# each of the three servers. +# + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test new file mode 100644 index 00000000000..030bc655291 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test @@ -0,0 +1,41 @@ +#Want to skip this test from daily Valgrind execution +--source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096. +# + +--let $rpl_topology= 1->2->3 +--source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 Tests. +# + +# +# Tests MINIMAL image against a mix of MyISAM and InnoDB engines on +# each of the three servers. +# + +-- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf new file mode 100644 index 00000000000..d758d29f481 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf @@ -0,0 +1 @@ +!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test new file mode 100644 index 00000000000..785f79bccdc --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test @@ -0,0 +1,41 @@ +#Want to skip this test from daily Valgrind execution +-- source include/no_valgrind_without_big.inc +# +# This file contains tests for WL#5096. +# + +-- let $rpl_topology= 1->2->3 +-- source include/rpl_init.inc +-- source include/have_binlog_format_row.inc + +-- connection server_1 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_2 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_3 +-- source include/have_innodb.inc +-- source include/have_tokudb.inc +-- connection server_1 + +# +# WL#5096 +# + +# +# Tests NOBLOB image against a mix of MyISAM and InnoDB engines on +# each of the three servers. +# + +-- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y +-- source include/rpl_row_img_set.inc + +-- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test +-- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc + +-- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y +-- source include/rpl_row_img_set.inc + + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log-master.opt new file mode 100644 index 00000000000..773ec62bef2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log-master.opt @@ -0,0 +1,2 @@ +--skip-external-locking +--default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log.test new file mode 100644 index 00000000000..bc624d4d89c --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_log.test @@ -0,0 +1,15 @@ +################################### +# Wrapper for rpl_row_log.test # +# Added wrapper so that MyISAM & # +# Innodb and NDB could all use the# +# Same test. NDB produced a diff # +# bin-log # +################################### +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_log.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt new file mode 100644 index 00000000000..8be29bbe976 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt @@ -0,0 +1 @@ +--replicate-do-db=bug_37656 --replicate-ignore-table=bug_37656.t1 --replicate-do-table=bug_37656.t2 --replicate-do-table=bug_37656.t3 --lower-case-table-names=1 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names.test new file mode 100644 index 00000000000..56599f3c1ad --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_lower_case_table_names.test @@ -0,0 +1,14 @@ +# BUG#37656 +# +# For details look into extra/rpl_tests/rpl_lower_case_table_names.test +# + +-- source include/not_gtid_enabled.inc +-- source include/have_tokudb.inc +-- source include/not_windows.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc + +-- let $engine=TokuDB +-- source extra/rpl_tests/rpl_lower_case_table_names.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp003.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp003.test new file mode 100644 index 00000000000..38ea65061fe --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp003.test @@ -0,0 +1,14 @@ +################################# +# Wrapper for rpl_row_sp003.test# +################################# +######################################################## +# By JBM 2005-02-15 Wrapped to allow reuse of test code# +# Added to skip if ndb is default # +######################################################## +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +let $engine_type=TOKUDB; +-- source extra/rpl_tests/rpl_row_sp003.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp006.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp006.test new file mode 100644 index 00000000000..41eececc198 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_sp006.test @@ -0,0 +1,14 @@ +################################# +# Wrapper for rpl_row_sp006.test# +################################# +######################################################## +# By JBM 2005-02-15 Wrapped to allow reuse of test code# +# Added to skip if ndb is default # +######################################################## +-- source include/not_ndb_default.inc +-- source include/have_tokudb.inc +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_row_sp006.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_trig004.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_trig004.test new file mode 100644 index 00000000000..ad4ea1a2a57 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_trig004.test @@ -0,0 +1,19 @@ +############################################################################# +# Original Author: JBM # +# Original Date: Oct/18/2005 # +############################################################################# +# TEST: Use before insert triggers and has the second insert fail # +############################################################################# +# Change by JBM 2006-02-14 added to skip when NDB default engine # +# This test has been wrapped to allow multipal engines to use same code # +############################################################################# + +# Includes +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_row.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TOKUDB; +-- source extra/rpl_tests/rpl_trig004.test + +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log-master.opt new file mode 100644 index 00000000000..773ec62bef2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log-master.opt @@ -0,0 +1,2 @@ +--skip-external-locking +--default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log.test new file mode 100644 index 00000000000..42eb4961dce --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_log.test @@ -0,0 +1,15 @@ +################################### +# Wrapper for rpl_row_log.test # +# Added wrapper so that MyISAM & # +# Innodb and NDB could all use the# +# Same test. NDB produced a diff # +# bin-log # +################################### +-- source include/not_ndb_default.inc +-- source include/have_binlog_format_statement.inc +-- source include/have_tokudb.inc +-- source include/master-slave.inc +let $engine_type=TokuDB; +-- source extra/rpl_tests/rpl_log.test + +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt new file mode 100644 index 00000000000..e980c2de7ff --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt @@ -0,0 +1 @@ +--transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt new file mode 100644 index 00000000000..264c5c1a4b4 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt @@ -0,0 +1 @@ +--skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1 --transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe.test new file mode 100644 index 00000000000..724550fae4a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_crash_safe.test @@ -0,0 +1,18 @@ +--source include/big_test.inc +--source include/not_embedded.inc +--source include/not_valgrind.inc +--source include/have_debug.inc +--source include/have_tokudb.inc +--source include/have_binlog_format_mixed_or_statement.inc +--source include/not_mts_slave_parallel_workers.inc +--source include/master-slave.inc + +call mtr.add_suppression('Attempting backtrace'); +call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); +call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); + +let $engine_type=TokuDB; +let $database_name=test; +--source extra/rpl_tests/rpl_crash_safe.test +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt new file mode 100644 index 00000000000..8be29bbe976 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt @@ -0,0 +1 @@ +--replicate-do-db=bug_37656 --replicate-ignore-table=bug_37656.t1 --replicate-do-table=bug_37656.t2 --replicate-do-table=bug_37656.t3 --lower-case-table-names=1 diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test new file mode 100644 index 00000000000..2a7e690f27a --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test @@ -0,0 +1,14 @@ +# BUG#37656 +# +# For details look into extra/rpl_tests/rpl_lower_case_table_names.test +# + +-- source include/not_gtid_enabled.inc +-- source include/have_tokudb.inc +-- source include/not_windows.inc +-- source include/have_binlog_format_mixed_or_statement.inc +-- source include/master-slave.inc + +-- let $engine=TokuDB +-- source extra/rpl_tests/rpl_lower_case_table_names.test +-- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt new file mode 100644 index 00000000000..93a2685e847 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test new file mode 100644 index 00000000000..6dd9b660eed --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test @@ -0,0 +1,70 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt new file mode 100644 index 00000000000..a4ca1104425 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test new file mode 100644 index 00000000000..6dd9b660eed --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test @@ -0,0 +1,70 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt new file mode 100644 index 00000000000..4b1d21daf5f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=ON --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test new file mode 100644 index 00000000000..6dd9b660eed --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test @@ -0,0 +1,70 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt new file mode 100644 index 00000000000..239e19ac040 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=ON --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test new file mode 100644 index 00000000000..6dd9b660eed --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test @@ -0,0 +1,70 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; +# show create table t; +insert into t values (1,0); +insert into t values (2,0),(3,0); +insert into t values (4,0); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt new file mode 100644 index 00000000000..93a2685e847 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test new file mode 100644 index 00000000000..93fef3699d9 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test @@ -0,0 +1,70 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=$engine; +# show create table t; +insert into t values (1,0,-1); +insert into t values (2,0,-2),(3,0,-3); +insert into t values (4,0,-4); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt new file mode 100644 index 00000000000..a4ca1104425 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test new file mode 100644 index 00000000000..c8976db8ccd --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test @@ -0,0 +1,69 @@ +# test replicated update rows log events on a table with a primary key. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=$engine; +# show create table t; +insert into t values (1,0,-1); +insert into t values (2,0,-2),(3,0,-3); +insert into t values (4,0,-4); + +# wait for the inserts to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# delete a row +connection master; +update t set b=b+1 where a=2; +update t set b=b+2 where a=1; +update t set b=b+3 where a=4; +update t set b=b+4 where a=3; +update t set b=b+1 where 1<=a and a<=3; +select unix_timestamp() into @tstart; + +# wait for the delete to finish on the slave +connection master; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; +connection master; +select unix_timestamp() into @tend; +select @tend-@tstart <= 5; # assert no delay in the delete time + +connection slave; +select * from t; + +# diff tables +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk-slave.opt new file mode 100644 index 00000000000..19b40f86454 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk.test new file mode 100644 index 00000000000..0ed12b34e1f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_unique_checks%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1-slave.opt new file mode 100644 index 00000000000..646a9991753 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=ON diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1.test new file mode 100644 index 00000000000..0ed12b34e1f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_pk_uc1.test @@ -0,0 +1,53 @@ +# test replicated write rows log events on a table with a primary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_unique_checks%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, primary key(a)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1); +insert into t values (2),(3); +insert into t values (4); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# insert into t values (5); # test read-only +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique-slave.opt new file mode 100644 index 00000000000..19b40f86454 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique.test new file mode 100644 index 00000000000..fc4c9597dac --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique.test @@ -0,0 +1,52 @@ +# test replicated write rows log events on a table with a primary key and a unique secondary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_unique_checks%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1,2); +insert into t values (2,3),(3,4); +insert into t values (4,5); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1-slave.opt b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1-slave.opt new file mode 100644 index 00000000000..9139a370e57 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1-slave.opt @@ -0,0 +1 @@ +--read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=ON diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1.test new file mode 100644 index 00000000000..fc4c9597dac --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_write_unique_uc1.test @@ -0,0 +1,52 @@ +# test replicated write rows log events on a table with a primary key and a unique secondary key. +# the slave is read only with tokudb unique checks disabled. + +source include/have_tokudb.inc; +let $engine=tokudb; +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +# initialize +connection master; +disable_warnings; +drop table if exists t; +enable_warnings; + +connection slave; +# show variables like 'read_only'; +show variables like 'tokudb_rpl_unique_checks%'; + +# insert some rows +connection master; +# select @@binlog_format; +# select @@autocommit; +eval create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=$engine; +# show create table t; +select unix_timestamp() into @tstart; +insert into t values (1,2); +insert into t values (2,3),(3,4); +insert into t values (4,5); + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +connection master; +select unix_timestamp()-@tstart <= 10; + +connection slave; +# show create table t; + +# diff tables +connection master; +--let $diff_tables= master:test.t, slave:test.t +source include/diff_tables.inc; + +# cleanup +connection master; +drop table if exists t; + +sync_slave_with_master; +# source include/sync_slave_sql_with_master.inc; + +source include/rpl_end.inc; + diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_truncate_3tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_truncate_3tokudb.test new file mode 100644 index 00000000000..8c2cf7ca4ba --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_truncate_3tokudb.test @@ -0,0 +1,4 @@ +--source include/have_tokudb.inc +--source include/not_ndb_default.inc +let $engine=TokuDB; +--source extra/rpl_tests/rpl_truncate.test diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_typeconv_tokudb.test b/storage/tokudb/mysql-test/rpl/t/rpl_typeconv_tokudb.test new file mode 100644 index 00000000000..0f73e60f278 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/rpl_typeconv_tokudb.test @@ -0,0 +1,26 @@ +--source include/have_binlog_format_row.inc +--source include/have_tokudb.inc +--source include/master-slave.inc + +# +# BUG#49618: Field length stored incorrectly in binary log for InnoDB +# + +connection slave; +SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS; +SET GLOBAL SLAVE_TYPE_CONVERSIONS = ''; + +connection master; +CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=TokuDB; +INSERT INTO t1 VALUES (b'0', b'01', b'101'); +sync_slave_with_master; + +let $diff_tables= master:t1, slave:t1; +source include/diff_tables.inc; + +connection master; +DROP TABLE t1; +sync_slave_with_master; + +SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/rpl/t/suite.opt b/storage/tokudb/mysql-test/rpl/t/suite.opt new file mode 100644 index 00000000000..15acdf7397f --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/suite.opt @@ -0,0 +1 @@ +$TOKUDB_OPT $TOKUDB_LOAD_ADD --loose-tokudb-check-jemalloc=0 --loose-tokudb-cache-size=512M --loose-tokudb-block-size=1M diff --git a/storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash-slave.opt b/storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash-slave.opt new file mode 100644 index 00000000000..978dfbc809e --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash-slave.opt @@ -0,0 +1 @@ +--log-slave-updates=0 \ No newline at end of file diff --git a/storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash.test b/storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash.test new file mode 100644 index 00000000000..97818a597e2 --- /dev/null +++ b/storage/tokudb/mysql-test/rpl/t/tokudb_innodb_xa_crash.test @@ -0,0 +1,25 @@ +--source include/master-slave.inc +--source include/have_tokudb.inc +--source include/have_innodb.inc + +eval CREATE TABLE t1(`a` INT) ENGINE=TokuDB; +eval CREATE TABLE t2(`a` INT) ENGINE=InnoDB; + +connection master; +begin; +insert into t1 values (1); +insert into t2 values (1); +commit; + +sync_slave_with_master; + +--echo TABLES t1 and t2 must be equal otherwise an error will be thrown. +let $diff_tables= master:test.t1, slave:test.t1; +source include/diff_tables.inc; + +let $diff_tables= master:test.t2, slave:test.t2; +source include/diff_tables.inc; + +connection master; +drop table t1,t2; +--source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/combinations b/storage/tokudb/mysql-test/tokudb_rpl/combinations deleted file mode 100644 index 07042c2cbec..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/combinations +++ /dev/null @@ -1,8 +0,0 @@ -[row] -binlog-format=row - -[stmt] -binlog-format=statement - -[mix] -binlog-format=mixed diff --git a/storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc b/storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc deleted file mode 100644 index 321f09353a1..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/include/rpl_tokudb_row_img_general_loop.inc +++ /dev/null @@ -1,42 +0,0 @@ -# -# This is a helper script for rpl_row_img.test. It creates -# all combinations MyISAM / InnoDB in a three server replication -# chain. Each engine combination is tested against the current -# seetings for binlog_row_image (on each server). -# -# The test script that is executed on every combination is the -# only argument to this wrapper script. See below. -# -# This script takes one parameter: -# - $row_img_test_script -# the name of the test script to include in every combination -# -# Sample usage: -# -- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test -# -- source include/rpl_row_img_general_loop.test - - --- let $engine_type_a= 2 --- let $server_1_engine= TokuDB -while($engine_type_a) -{ - -- let $engine_type_b= 2 - -- let $server_2_engine= TokuDB - while($engine_type_b) - { - -- let $engine_type_c= 2 - -- let $server_3_engine= TokuDB - while($engine_type_c) - { - -- echo ### engines: $server_1_engine, $server_2_engine, $server_3_engine - -- source $row_img_test_script - - -- let $server_3_engine= InnoDB - -- dec $engine_type_c - } - -- let $server_2_engine= InnoDB - -- dec $engine_type_b - } - -- let $server_1_engine= InnoDB - -- dec $engine_type_a -} diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_deadlock_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_deadlock_tokudb.result deleted file mode 100644 index a64b5dcbeed..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_deadlock_tokudb.result +++ /dev/null @@ -1,143 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -*** Prepare tables and data *** -CREATE TABLE t1 (a INT NOT NULL, KEY(a)) ENGINE=TokuDB; -CREATE TABLE t2 (a INT) ENGINE=TokuDB; -CREATE TABLE t3 (a INT NOT NULL, KEY(a)) ENGINE=TokuDB; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) NOT NULL, - KEY `a` (`a`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SHOW CREATE TABLE t2; -Table Create Table -t2 CREATE TABLE `t2` ( - `a` int(11) DEFAULT NULL -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SHOW CREATE TABLE t3; -Table Create Table -t3 CREATE TABLE `t3` ( - `a` int(11) NOT NULL, - KEY `a` (`a`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SELECT @@GLOBAL.slave_transaction_retries; -@@GLOBAL.slave_transaction_retries -2 -SELECT @@GLOBAL.innodb_lock_wait_timeout; -@@GLOBAL.innodb_lock_wait_timeout -4 -include/stop_slave.inc -BEGIN; -INSERT INTO t1 VALUES (1); -INSERT INTO t2 VALUES (2), (2), (2), (2), (2), (2), (2), (2), (2), (2); -INSERT INTO t3 VALUES (3); -COMMIT; - -*** Test deadlock *** -BEGIN; -SELECT * FROM t1 FOR UPDATE; -a -include/start_slave.inc -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -COMMIT; -include/check_slave_is_running.inc -SELECT * FROM t1; -a -1 -SELECT * FROM t3; -a -3 - -*** Test lock wait timeout *** -include/stop_slave.inc -DELETE FROM t2; -RESET MASTER; -CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN; -BEGIN; -SELECT * FROM t1 FOR UPDATE; -a -1 -START SLAVE; -include/wait_for_slave_sql_error.inc [errno=1205] -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -COMMIT; -include/start_slave.inc -SELECT * FROM t1; -a -1 -1 -SELECT * FROM t3; -a -3 -3 -include/check_slave_is_running.inc - -*** Test lock wait timeout and purged relay logs *** -SET @my_max_relay_log_size= @@global.max_relay_log_size; -SET global max_relay_log_size=0; -include/stop_slave.inc -DELETE FROM t2; -RESET MASTER; -CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN; -BEGIN; -SELECT * FROM t1 FOR UPDATE; -a -1 -1 -START SLAVE; -include/wait_for_slave_sql_error.inc [errno=1205] -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -COMMIT; -include/start_slave.inc -SELECT * FROM t1; -a -1 -1 -1 -SELECT * FROM t3; -a -3 -3 -3 -include/check_slave_is_running.inc - -*** Test the deadlock warning to be escalated into the error *** -delete from t1; -delete from t2; -delete from t3; -delete from t1; -delete from t2; -delete from t3; -set @save.slave_transaction_retries= @@global.slave_transaction_retries; -set @@global.slave_transaction_retries= 0; -include/stop_slave.inc -BEGIN; -INSERT INTO t1 VALUES (1); -INSERT INTO t2 VALUES (2), (2), (2), (2), (2), (2), (2), (2), (2), (2); -INSERT INTO t3 VALUES (3); -COMMIT; -BEGIN; -SELECT count(*) as zero FROM t1 FOR UPDATE; -zero -0 -START SLAVE; -*** Now the slave must be stopped due to timeout *** -include/wait_for_slave_sql_error.inc [errno=1205] -rollback; -set @@global.slave_transaction_retries= @save.slave_transaction_retries; -include/start_slave.inc -*** Clean up *** -DROP TABLE t1,t2,t3; -SET global max_relay_log_size= @my_max_relay_log_size; -End of 5.1 tests -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_master_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_master_tokudb.result deleted file mode 100644 index 63cc27481c5..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_master_tokudb.result +++ /dev/null @@ -1,859 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] - -*********************************************************** -*********************************************************** -***************** Start of Testing ************************ -*********************************************************** -*********************************************************** -* This test format == binlog_format ROW and engine == TokuDB -*********************************************************** -*********************************************************** - -***** Testing more columns on the Master ***** - -CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), -/* extra */ -f5 FLOAT DEFAULT '2.00', -f6 CHAR(4) DEFAULT 'TEST', -f7 INT DEFAULT '0', -f8 TEXT, -f9 LONGBLOB, -f10 BIT(63), -f11 VARBINARY(64))ENGINE=TokuDB; - -* Alter Table on Slave and drop columns f5 through f11 * - -alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11; - -* Insert data in Master then update and delete some rows* - -* Select count and 20 rows from Master * - -SELECT COUNT(*) FROM t1; -COUNT(*) -40 - -SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9, -hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20; -f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(f11) -2 2 2 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -3 3 3 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -5 5 5 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -6 6 6 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -8 8 8 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -9 9 9 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -11 11 11 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -12 12 12 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -14 14 14 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -15 15 15 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -17 17 17 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -18 18 18 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -20 20 20 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -21 21 21 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -23 23 23 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -24 24 24 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -26 26 26 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 -30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456 - -* Select count and 20 rows from Slave * - -SELECT COUNT(*) FROM t1; -COUNT(*) -40 - -SELECT * FROM t1 ORDER BY f3 LIMIT 20; -f1 f2 f3 f4 -2 2 2 second -3 3 3 next -5 5 5 second -6 6 6 next -8 8 8 second -9 9 9 next -11 11 11 second -12 12 12 next -14 14 14 second -15 15 15 next -17 17 17 second -18 18 18 next -20 20 20 second -21 21 21 next -23 23 23 second -24 24 24 next -26 26 26 second -27 27 27 next -29 29 29 second -30 30 30 next -include/check_slave_is_running.inc - -***** Testing Altering table def scenario ***** - -CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), -/* extra */ -f5 DOUBLE DEFAULT '2.00', -f6 ENUM('a', 'b', 'c') default 'a', -f7 DECIMAL(17,9) default '1000.00', -f8 MEDIUMBLOB, -f9 NUMERIC(6,2) default '2000.00', -f10 VARCHAR(1024), -f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', -f12 SET('a', 'b', 'c') default 'b') -ENGINE=TokuDB; - -CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), -/* extra */ -f5 DOUBLE DEFAULT '2.00', -f6 ENUM('a', 'b', 'c') default 'a', -f8 MEDIUMBLOB, -f10 VARCHAR(1024), -f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', -f12 SET('a', 'b', 'c') default 'b') -ENGINE=TokuDB; - -CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), -/* extra */ -f5 DOUBLE DEFAULT '2.00', -f6 DECIMAL(17,9) default '1000.00', -f7 MEDIUMBLOB, -f8 NUMERIC(6,2) default '2000.00', -f9 VARCHAR(1024), -f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', -f11 CHAR(255)) -ENGINE=TokuDB; - -CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20), -/* extra */ -f5 BIGINT, -f6 BLOB, -f7 DATE, -f8 DATETIME, -f9 FLOAT, -f10 INT, -f11 LONGBLOB, -f12 LONGTEXT, -f13 MEDIUMBLOB, -f14 MEDIUMINT, -f15 MEDIUMTEXT, -f16 REAL, -f17 SMALLINT, -f18 TEXT, -f19 TIME, -f20 TIMESTAMP, -f21 TINYBLOB, -f22 TINYINT, -f23 TINYTEXT, -f24 YEAR, -f25 BINARY(255), -f26 BIT(64), -f27 CHAR(255), -f28 DECIMAL(30,7), -f29 DOUBLE, -f30 ENUM ('a','b', 'c') default 'a', -f31 FLOAT, -f32 NUMERIC(17,9), -f33 SET ('a', 'b', 'c') default 'b', -f34 VARBINARY(1025), -f35 VARCHAR(257) -) ENGINE=TokuDB; - -** Alter tables on slave and drop columns ** - -alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop -f12; -alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12; -alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11; -alter table t31 -drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, -drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18, -drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25, -drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32, -drop f33, drop f34, drop f35; - -** Insert Data into Master ** -INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10: -some var char'; -INSERT into t2 values (2, 2, 2, 'second', -2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char', -'01234567', 'c'), -(3, 3, 3, 'third', -3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char', -'01234567', 'c'); -INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char'; -INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10: -binary data'; -INSERT into t31 set f1=1, f2=1, f3=1, f4='first'; -INSERT into t31 set f1=1, f2=1, f3=2, f4='second', -f9=2.2, f10='seven samurai', f28=222.222, f35='222'; -Warnings: -Warning 1366 Incorrect integer value: 'seven samurai' for column 'f10' at row 1 -INSERT into t31 values (1, 1, 3, 'third', -/* f5 BIGINT, */ 333333333333333333333333, -/* f6 BLOB, */ '3333333333333333333333', -/* f7 DATE, */ '2007-07-18', -/* f8 DATETIME, */ "2007-07-18", -/* f9 FLOAT, */ 3.33333333, -/* f10 INT, */ 333333333, -/* f11 LONGBLOB, */ '3333333333333333333', -/* f12 LONGTEXT, */ '3333333333333333333', -/* f13 MEDIUMBLOB, */ '3333333333333333333', -/* f14 MEDIUMINT, */ 33, -/* f15 MEDIUMTEXT, */ 3.3, -/* f16 REAL, */ 3.3, -/* f17 SMALLINT, */ 3, -/* f18 TEXT, */ '33', -/* f19 TIME, */ '2:59:58.999', -/* f20 TIMESTAMP, */ 20000303000000, -/* f21 TINYBLOB, */ '3333', -/* f22 TINYINT, */ 3, -/* f23 TINYTEXT, */ '3', -/* f24 YEAR, */ 3000, -/* f25 BINARY(255), */ 'three_33333', -/* f26 BIT(64), */ b'011', -/* f27 CHAR(255), */ 'three', -/* f28 DECIMAL(30,7), */ 3.333, -/* f29 DOUBLE, */ 3.333333333333333333333333333, -/* f30 ENUM ('a','b','c')*/ 'c', -/* f31 FLOAT, */ 3.0, -/* f32 NUMERIC(17,9), */ 3.3333, -/* f33 SET ('a','b','c'),*/ 'c', -/*f34 VARBINARY(1025),*/ '3333 minus 3', -/*f35 VARCHAR(257),*/ 'three times three' - ); -Warnings: -Warning 1264 Out of range value for column 'f5' at row 1 -Warning 1264 Out of range value for column 'f24' at row 1 -INSERT into t31 values (1, 1, 4, 'fourth', -/* f5 BIGINT, */ 333333333333333333333333, -/* f6 BLOB, */ '3333333333333333333333', -/* f7 DATE, */ '2007-07-18', -/* f8 DATETIME, */ "2007-07-18", -/* f9 FLOAT, */ 3.33333333, -/* f10 INT, */ 333333333, -/* f11 LONGBLOB, */ '3333333333333333333', -/* f12 LONGTEXT, */ '3333333333333333333', -/* f13 MEDIUMBLOB, */ '3333333333333333333', -/* f14 MEDIUMINT, */ 33, -/* f15 MEDIUMTEXT, */ 3.3, -/* f16 REAL, */ 3.3, -/* f17 SMALLINT, */ 3, -/* f18 TEXT, */ '33', -/* f19 TIME, */ '2:59:58.999', -/* f20 TIMESTAMP, */ 20000303000000, -/* f21 TINYBLOB, */ '3333', -/* f22 TINYINT, */ 3, -/* f23 TINYTEXT, */ '3', -/* f24 YEAR, */ 3000, -/* f25 BINARY(255), */ 'three_33333', -/* f26 BIT(64), */ b'011', -/* f27 CHAR(255), */ 'three', -/* f28 DECIMAL(30,7), */ 3.333, -/* f29 DOUBLE, */ 3.333333333333333333333333333, -/* f30 ENUM ('a','b','c')*/ 'c', -/* f31 FLOAT, */ 3.0, -/* f32 NUMERIC(17,9), */ 3.3333, -/* f33 SET ('a','b','c'),*/ 'c', -/*f34 VARBINARY(1025),*/ '3333 minus 3', -/*f35 VARCHAR(257),*/ 'three times three' - ), -(1, 1, 5, 'fifth', -/* f5 BIGINT, */ 333333333333333333333333, -/* f6 BLOB, */ '3333333333333333333333', -/* f7 DATE, */ '2007-07-18', -/* f8 DATETIME, */ "2007-07-18", -/* f9 FLOAT, */ 3.33333333, -/* f10 INT, */ 333333333, -/* f11 LONGBLOB, */ '3333333333333333333', -/* f12 LONGTEXT, */ '3333333333333333333', -/* f13 MEDIUMBLOB, */ '3333333333333333333', -/* f14 MEDIUMINT, */ 33, -/* f15 MEDIUMTEXT, */ 3.3, -/* f16 REAL, */ 3.3, -/* f17 SMALLINT, */ 3, -/* f18 TEXT, */ '33', -/* f19 TIME, */ '2:59:58.999', -/* f20 TIMESTAMP, */ 20000303000000, -/* f21 TINYBLOB, */ '3333', -/* f22 TINYINT, */ 3, -/* f23 TINYTEXT, */ '3', -/* f24 YEAR, */ 3000, -/* f25 BINARY(255), */ 'three_33333', -/* f26 BIT(64), */ b'011', -/* f27 CHAR(255), */ 'three', -/* f28 DECIMAL(30,7), */ 3.333, -/* f29 DOUBLE, */ 3.333333333333333333333333333, -/* f30 ENUM ('a','b','c')*/ 'c', -/* f31 FLOAT, */ 3.0, -/* f32 NUMERIC(17,9), */ 3.3333, -/* f33 SET ('a','b','c'),*/ 'c', -/*f34 VARBINARY(1025),*/ '3333 minus 3', -/*f35 VARCHAR(257),*/ 'three times three' - ), -(1, 1, 6, 'sixth', -/* f5 BIGINT, */ NULL, -/* f6 BLOB, */ '3333333333333333333333', -/* f7 DATE, */ '2007-07-18', -/* f8 DATETIME, */ "2007-07-18", -/* f9 FLOAT, */ 3.33333333, -/* f10 INT, */ 333333333, -/* f11 LONGBLOB, */ '3333333333333333333', -/* f12 LONGTEXT, */ '3333333333333333333', -/* f13 MEDIUMBLOB, */ '3333333333333333333', -/* f14 MEDIUMINT, */ 33, -/* f15 MEDIUMTEXT, */ 3.3, -/* f16 REAL, */ 3.3, -/* f17 SMALLINT, */ 3, -/* f18 TEXT, */ '33', -/* f19 TIME, */ '2:59:58.999', -/* f20 TIMESTAMP, */ 20000303000000, -/* f21 TINYBLOB, */ '3333', -/* f22 TINYINT, */ 3, -/* f23 TINYTEXT, */ '3', -/* f24 YEAR, */ 3000, -/* f25 BINARY(255), */ 'three_33333', -/* f26 BIT(64), */ b'011', -/* f27 CHAR(255), */ 'three', -/* f28 DECIMAL(30,7), */ 3.333, -/* f29 DOUBLE, */ 3.333333333333333333333333333, -/* f30 ENUM ('a','b','c')*/ 'c', -/* f31 FLOAT, */ 3.0, -/* f32 NUMERIC(17,9), */ 3.3333, -/* f33 SET ('a','b','c'),*/ 'c', -/*f34 VARBINARY(1025),*/ '3333 minus 3', -/*f35 VARCHAR(257),*/ NULL -); -Warnings: -Warning 1264 Out of range value for column 'f5' at row 1 -Warning 1264 Out of range value for column 'f24' at row 1 -Warning 1264 Out of range value for column 'f5' at row 2 -Warning 1264 Out of range value for column 'f24' at row 2 -Warning 1264 Out of range value for column 'f24' at row 3 - -** Sync slave with master ** -** Do selects from tables ** - -select * from t1 order by f3; -f1 f2 f3 f4 -2 2 2 second -3 3 3 next -5 5 5 second -6 6 6 next -8 8 8 second -9 9 9 next -11 11 11 second -12 12 12 next -14 14 14 second -15 15 15 next -17 17 17 second -18 18 18 next -20 20 20 second -21 21 21 next -23 23 23 second -24 24 24 next -26 26 26 second -27 27 27 next -29 29 29 second -30 30 30 next -31 31 31 second -32 32 32 second -33 33 33 second -34 34 34 second -35 35 35 second -36 36 36 second -37 37 37 second -38 38 38 second -39 39 39 second -40 40 40 second -41 41 41 second -42 42 42 second -43 43 43 second -44 44 44 second -45 45 45 second -46 46 46 second -47 47 47 second -48 48 48 second -49 49 49 second -50 50 50 second -select * from t2 order by f1; -f1 f2 f3 f4 -1 1 1 first -2 2 2 second -3 3 3 third -select * from t3 order by f1; -f1 f2 f3 f4 -1 1 1 first -select * from t4 order by f1; -f1 f2 f3 f4 -1 1 1 first -select * from t31 order by f3; -f1 f2 f3 f4 -1 1 1 first -1 1 2 second -1 1 3 third -1 1 4 fourth -1 1 5 fifth -1 1 6 sixth - -** Do updates master ** - -update t31 set f5=555555555555555 where f3=6; -update t31 set f2=2 where f3=2; -update t31 set f1=NULL where f3=1; -update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3; -Warnings: -Warning 1048 Column 'f3' cannot be null - -** Delete from Master ** - -delete from t1; -delete from t2; -delete from t3; -delete from t4; -delete from t31; -select * from t31; -f1 f2 f3 f4 - -** Check slave status ** - -include/check_slave_is_running.inc - -**************************************** -* columns in master at middle of table * -* Expect: Proper error message * -**************************************** - -** Stop and Reset Slave ** - -STOP SLAVE; - -** create table slave side ** -CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5) -) ENGINE=TokuDB; - -** Connect to master and create table ** - -CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233', -c CHAR(5), e INT DEFAULT '1')ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), -(2,@b1,DEFAULT,'JOE',DEFAULT), -(3,@b1,DEFAULT,'QA',DEFAULT); - -******************************************** -*** Expect slave to fail with Error 1677 *** -******************************************** - -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] - -*** Drop t10 *** -DROP TABLE t10; - -********************************************* -* More columns in master at middle of table * -* Expect: Proper error message * -********************************************* - -*** Create t11 on slave *** -STOP SLAVE; -CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254) -) ENGINE=TokuDB; - -*** Create t11 on Master *** -CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT, -c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), -(2,@b1,'Testing is cool','JOE',DEFAULT), -(3,@b1,DEFAULT,'QA',DEFAULT); - -******************************************** -*** Expect slave to fail with Error 1677 *** -******************************************** - -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] - -*** Drop t11 *** -DROP TABLE t11; - -********************************************* -* More columns in master at middle of table * -* Expect: This one should pass blob-text * -********************************************* - -*** Create t12 on slave *** -STOP SLAVE; -CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB -) ENGINE=TokuDB; - -*** Create t12 on Master *** -CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT, -c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), -(2,@b1,'JOE',DEFAULT,DEFAULT), -(3,@b1,'QA',DEFAULT,DEFAULT); - -SELECT a,hex(b),f,c,e FROM t12 ORDER BY a; -a hex(b) f c e -1 62316231623162316231623162316231 Kyle test 1 -2 62316231623162316231623162316231 JOE test 1 -3 62316231623162316231623162316231 QA test 1 - -*** Select on Slave *** -SELECT a,hex(b),c FROM t12 ORDER BY a; -a hex(b) c -1 62316231623162316231623162316231 Kyle -2 62316231623162316231623162316231 JOE -3 62316231623162316231623162316231 QA - -*** Drop t12 *** -DROP TABLE t12; - -**************************************************** -* - Alter Master adding columns at middle of table * -* Expect: columns added * -**************************************************** - - -*** Create t14 on slave *** -STOP SLAVE; -CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE=TokuDB; - -*** Create t14 on Master *** -CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1; -ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2; - -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT), -(2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT), -(3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT); - -SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1; -c1 c2 c3 hex(c4) c5 c6 c7 -1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP -2 2.00 This Test Should work 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP -3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP - -*** Select on Slave **** -SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1; -c1 c2 c3 hex(c4) c5 -1 1.00 Replication Testing Extra Col 62316231623162316231623162316231 Kyle -2 2.00 This Test Should work 62316231623162316231623162316231 JOE -3 3.00 If is does not, I will open a bug 62316231623162316231623162316231 QA - -**************************************************** -* - Alter Master Dropping columns from the middle. * -* Expect: columns dropped * -**************************************************** - -*** connect to master and drop columns *** -ALTER TABLE t14 DROP COLUMN c2; -ALTER TABLE t14 DROP COLUMN c7; - -*** Select from Master *** -SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1; -c1 c3 hex(c4) c5 c6 -1 Replication Testing Extra Col 62316231623162316231623162316231 Kyle 1 -2 This Test Should work 62316231623162316231623162316231 JOE 1 -3 If is does not, I will open a bug 62316231623162316231623162316231 QA 1 - -************ -* Bug30415 * -************ -include/wait_for_slave_sql_error.inc [errno=1091] -STOP SLAVE; - -*** Drop t14 *** -DROP TABLE t14; -DROP TABLE t14; -include/rpl_reset.inc - -************************************************* -* - Alter Master adding columns at end of table * -* Expect: Error 1054 * -************************************************* - -*** Create t15 on slave *** -STOP SLAVE; -CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE=TokuDB; - -*** Create t15 on Master *** -CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7; -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00), -(2,@b1,'JOE',DEFAULT,DEFAULT,3.00), -(3,@b1,'QA',DEFAULT,DEFAULT,3.00); -SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1; -c1 hex(c4) c5 c6 c7 c2 -1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP 3.00 -2 62316231623162316231623162316231 JOE 1 CURRENT_TIMESTAMP 3.00 -3 62316231623162316231623162316231 QA 1 CURRENT_TIMESTAMP 3.00 - -******************************************** -*** Expect slave to fail with Error 1054 *** -******************************************** - -include/wait_for_slave_sql_error.inc [errno=1054] -STOP SLAVE; - -*** Drop t15 *** -DROP TABLE t15; -DROP TABLE t15; -include/rpl_reset.inc - -************************************************ -* - Create index on Master column not on slave * -* Expect:Warning * -************************************************ - -*** Create t16 on slave *** -STOP SLAVE; -CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE=TokuDB; - -*** Create t16 on Master *** -CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Create Index and Data Insert *** -CREATE INDEX part_of_c6 ON t16 (c6); -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), -(2,@b1,'JOE',2,DEFAULT), -(3,@b1,'QA',3,DEFAULT); -SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1; -c1 hex(c4) c5 c6 c7 -1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP -2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP -3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP - -***************** -*** BUG 30434 *** -***************** - -include/wait_for_slave_sql_error.inc [errno=1072] -STOP SLAVE; - -*** Drop t16 *** -DROP TABLE t16; -DROP TABLE t16; -include/rpl_reset.inc - -***************************************************** -* - Delete rows using column on Master not on slave * -* Expect: Rows Deleted * -***************************************************** - -*** Create t17 on slave *** -STOP SLAVE; -CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE=TokuDB; - -*** Create t17 on Master *** -CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), -(2,@b1,'JOE',2,DEFAULT), -(3,@b1,'QA',3,DEFAULT); -SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1; -c1 hex(c4) c5 c6 c7 -1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP -2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP -3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP - -** Select * from Slave ** -SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1; -c1 hex(c4) c5 -1 62316231623162316231623162316231 Kyle -2 62316231623162316231623162316231 JOE -3 62316231623162316231623162316231 QA - -** Delete from master ** -DELETE FROM t17 WHERE c6 = 3; -SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1; -c1 hex(c4) c5 c6 c7 -1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP -2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP - -** Check slave ** -SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1; -c1 hex(c4) c5 -1 62316231623162316231623162316231 Kyle -2 62316231623162316231623162316231 JOE -DROP TABLE t17; - - -***************************************************** -* - Update row using column on Master not on slave * -* Expect: Rows updated * -***************************************************** - -** Bug30674 ** - -*** Create t18 on slave *** - -STOP SLAVE; -CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE=TokuDB; - -*** Create t18 on Master *** -CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT), -(2,@b1,'JOE',2,DEFAULT), -(3,@b1,'QA',3,DEFAULT); -SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1; -c1 hex(c4) c5 c6 c7 -1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP -2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP -3 62316231623162316231623162316231 QA 3 CURRENT_TIMESTAMP - -** Select * from Slave ** -SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1; -c1 hex(c4) c5 -1 62316231623162316231623162316231 Kyle -2 62316231623162316231623162316231 JOE -3 62316231623162316231623162316231 QA - -** update from master ** -UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3; -SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1; -c1 hex(c4) c5 c6 c7 -1 62316231623162316231623162316231 Kyle 1 CURRENT_TIMESTAMP -2 62316231623162316231623162316231 JOE 2 CURRENT_TIMESTAMP -3 62316231623162316231623162316231 TEST 3 CURRENT_TIMESTAMP - -** Check slave ** -SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1; -c1 hex(c4) c5 -1 62316231623162316231623162316231 Kyle -2 62316231623162316231623162316231 JOE -3 62316231623162316231623162316231 TEST -DROP TABLE t18; - - -***************************************************** -* - Insert UUID column on Master not on slave * -* Expect: Rows inserted * -***************************************************** - -*** Create t5 on slave *** -STOP SLAVE; -CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE=TokuDB; - -*** Create t5 on Master *** -CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 LONG, -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE=TokuDB; - -*** Start Slave *** -include/rpl_reset.inc - -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT), -(2,@b1,'JOE',UUID(),DEFAULT), -(3,@b1,'QA',UUID(),DEFAULT); -SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1; -c1 hex(c4) c5 c6 c7 -1 6231623162316231 Kyle UUID TIME -2 6231623162316231 JOE UUID TIME -3 6231623162316231 QA UUID TIME - -** Select * from Slave ** -SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1; -c1 hex(c4) c5 -1 6231623162316231 Kyle -2 6231623162316231 JOE -3 6231623162316231 QA -DROP TABLE t5; - -include/rpl_reset.inc -SET NAMES utf8; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(255) CHARACTER SET UTF8 NOT NULL) ENGINE=TokuDB; -SET SQL_LOG_BIN=1; -CREATE TABLE t1 (c1 INT) ENGINE=TokuDB; -INSERT INTO t1 VALUES (); -SET @text= REPEAT(_utf8'ç', 255); -INSERT INTO t1 VALUES (1, @text); -SELECT * FROM t1 ORDER BY c1; -c1 c2 -0 -1 ççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççç -SELECT * FROM t1 ORDER BY c1; -c1 -0 -1 -DROP TABLE t1; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_slave_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_slave_tokudb.result deleted file mode 100644 index 2f4f7076ceb..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_extra_col_slave_tokudb.result +++ /dev/null @@ -1,552 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression("Slave: Unknown table 'test.t6' Error_code: 1051"); -call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot be converted from type.* Error_code: 1677"); -call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); -**** Diff Table Def Start **** -*** On Slave *** -STOP SLAVE; -SET @saved_slave_type_conversions = @@slave_type_conversions; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY'; -CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20), -d FLOAT DEFAULT '2.00', -e CHAR(4) DEFAULT 'TEST') -ENGINE='TokuDB'; -*** Create t1 on Master *** -CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c CHAR(10) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -INSERT INTO t1 () VALUES(1,2,'TEXAS'),(2,1,'AUSTIN'),(3,4,'QA'); -SELECT * FROM t1 ORDER BY a; -a b c -1 2 TEXAS -2 1 AUSTIN -3 4 QA -*** Select from slave *** -SELECT * FROM t1 ORDER BY a; -a b c d e -1 2 TEXAS 2 TEST -2 1 AUSTIN 2 TEST -3 4 QA 2 TEST -SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; -*** Drop t1 *** -DROP TABLE t1; -*** Create t2 on slave *** -STOP SLAVE; -CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5), -d FLOAT DEFAULT '2.00', -e CHAR(5) DEFAULT 'TEST2') -ENGINE='TokuDB'; -*** Create t2 on Master *** -CREATE TABLE t2 (a INT PRIMARY KEY, b INT, c CHAR(10) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -INSERT INTO t2 () VALUES(1,2,'Kyle, TEX'),(2,1,'JOE AUSTIN'),(3,4,'QA TESTING'); -SELECT * FROM t2 ORDER BY a; -a b c -1 2 Kyle, TEX -2 1 JOE AUSTIN -3 4 QA TESTING -include/wait_for_slave_sql_error.inc [errno=1677] -STOP SLAVE; -include/rpl_reset.inc -SELECT * FROM t2 ORDER BY a; -a b c d e -*** Drop t2 *** -DROP TABLE t2; -*** Create t3 on slave *** -STOP SLAVE; -CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20), -d FLOAT DEFAULT '2.00', -e CHAR(5) DEFAULT 'TEST2') -ENGINE='TokuDB'; -*** Create t3 on Master *** -CREATE TABLE t3 (a BLOB, b INT PRIMARY KEY, c CHAR(20) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING'); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -*** Drop t3 *** -DROP TABLE t3; -*** Create t4 on slave *** -STOP SLAVE; -CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20), -d FLOAT DEFAULT '2.00', -e CHAR(5) DEFAULT 'TEST2') -ENGINE='TokuDB'; -*** Create t4 on Master *** -CREATE TABLE t4 (a DECIMAL(8,2), b INT PRIMARY KEY, c CHAR(20) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), -(30000.22,4,'QA TESTING'); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -*** Drop t4 *** -DROP TABLE t4; -*** Create t5 on slave *** -STOP SLAVE; -CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5), -c FLOAT, d INT, e DOUBLE, -f DECIMAL(8,2))ENGINE='TokuDB'; -*** Create t5 on Master *** -CREATE TABLE t5 (a INT PRIMARY KEY, b VARCHAR(6), -c DECIMAL(8,2), d BIT, e BLOB, -f FLOAT) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), -(2,'JOE',300.01,0,'b2b2',1.0000009); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -*** Drop t5 *** -DROP TABLE t5; -*** Create t6 on slave *** -STOP SLAVE; -CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5), -c FLOAT, d INT)ENGINE='TokuDB'; -*** Create t6 on Master *** -CREATE TABLE t6 (a INT PRIMARY KEY, b VARCHAR(6), -c DECIMAL(8,2), d BIT -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), -(2,'JOE',300.01,0); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -*** Drop t6 *** -include/rpl_reset.inc -DROP TABLE t6; -**** Diff Table Def End **** -**** Extra Colums Start **** -*** Create t7 on slave *** -STOP SLAVE; -CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5), -d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00', -e CHAR(20) DEFAULT 'Extra Column Testing') -ENGINE='TokuDB'; -*** Create t7 on Master *** -CREATE TABLE t7 (a INT PRIMARY KEY, b BLOB, c CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t7 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -SELECT * FROM t7 ORDER BY a; -a b c -1 b1b1 Kyle -2 b1b1 JOE -3 b1b1 QA -*** Select from slave *** -SELECT * FROM t7 ORDER BY a; -a b c d e -1 b1b1 Kyle 0000-00-00 00:00:00 Extra Column Testing -2 b1b1 JOE 0000-00-00 00:00:00 Extra Column Testing -3 b1b1 QA 0000-00-00 00:00:00 Extra Column Testing -*** Drop t7 *** -DROP TABLE t7; -*** Create t8 on slave *** -STOP SLAVE; -CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5), -d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00', -e INT)ENGINE='TokuDB'; -*** Create t8 on Master *** -CREATE TABLE t8 (a INT PRIMARY KEY, b BLOB, c CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -*** Drop t8 *** -DROP TABLE t8; -STOP SLAVE; -CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5), -d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -ON UPDATE CURRENT_TIMESTAMP, -e INT NOT NULL, -f text not null, -g text, -h blob not null, -i blob) ENGINE='TokuDB'; -*** Create t9 on Master *** -CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -select * from t9; -a b c d e f g h i -1 b1b1b1b1b1b1b1b1 Kyle CURRENT_TIMESTAMP 0 NULL NULL -2 b1b1b1b1b1b1b1b1 JOE CURRENT_TIMESTAMP 0 NULL NULL -3 b1b1b1b1b1b1b1b1 QA CURRENT_TIMESTAMP 0 NULL NULL -include/assert.inc [The values of column 'd' should have non-zero timetsamp.] -DROP TABLE t9; -*** Create t10 on slave *** -STOP SLAVE; -CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233', -c CHAR(5), e INT DEFAULT '1')ENGINE='TokuDB'; -*** Create t10 on Master *** -CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -*** Drop t10 *** -DROP TABLE t10; -*** Create t11 on slave *** -STOP SLAVE; -CREATE TABLE t11 (a INT KEY, b BLOB, f INT, -c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='TokuDB'; -*** Create t11 on Master *** -CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -*** Drop t11 *** -DROP TABLE t11; -*** Create t12 on slave *** -STOP SLAVE; -CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT, -c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='TokuDB'; -*** Create t12 on Master *** -CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t12 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -SELECT * FROM t12 ORDER BY a; -a b c -1 b1b1b1b1b1b1b1b1 Kyle -2 b1b1b1b1b1b1b1b1 JOE -3 b1b1b1b1b1b1b1b1 QA -*** Select on Slave *** -SELECT * FROM t12 ORDER BY a; -a b f c e -1 b1b1b1b1b1b1b1b1 Kyle test 1 -2 b1b1b1b1b1b1b1b1 JOE test 1 -3 b1b1b1b1b1b1b1b1 QA test 1 -*** Drop t12 *** -DROP TABLE t12; -**** Extra Colums End **** -*** BUG 22177 Start *** -*** Create t13 on slave *** -STOP SLAVE; -CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5), -d INT DEFAULT '1', -e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE='TokuDB'; -*** Create t13 on Master *** -CREATE TABLE t13 (a INT PRIMARY KEY, b BLOB, c CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t13 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); -SELECT * FROM t13 ORDER BY a; -a b c -1 b1b1b1b1b1b1b1b1 Kyle -2 b1b1b1b1b1b1b1b1 JOE -3 b1b1b1b1b1b1b1b1 QA -*** Select on Slave **** -SELECT * FROM t13 ORDER BY a; -a b c d e -1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -*** Drop t13 *** -DROP TABLE t13; -*** 22117 END *** -*** Alter Master Table Testing Start *** -*** Create t14 on slave *** -STOP SLAVE; -CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE='TokuDB'; -*** Create t14 on Master *** -CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1; -ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2; -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'), -(2,2.00,'This Test Should work',@b1,'JOE'), -(3,3.00,'If is does not, I will open a bug',@b1,'QA'); -SELECT * FROM t14 ORDER BY c1; -c1 c2 c3 c4 c5 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA -*** Select on Slave **** -SELECT * FROM t14 ORDER BY c1; -c1 c2 c3 c4 c5 c6 c7 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -*** Create t14a on slave *** -STOP SLAVE; -CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE='TokuDB'; -*** Create t14a on Master *** -CREATE TABLE t14a (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t14a () VALUES(1,@b1,'Kyle'), -(2,@b1,'JOE'), -(3,@b1,'QA'); -SELECT * FROM t14a ORDER BY c1; -c1 c4 c5 -1 b1b1b1b1b1b1b1b1 Kyle -2 b1b1b1b1b1b1b1b1 JOE -3 b1b1b1b1b1b1b1b1 QA -*** Select on Slave **** -SELECT * FROM t14a ORDER BY c1; -c1 c4 c5 c6 c7 -1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -STOP SLAVE; -*** Master Drop c5 *** -ALTER TABLE t14a DROP COLUMN c5; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t14a () VALUES(4,@b1), -(5,@b1), -(6,@b1); -SELECT * FROM t14a ORDER BY c1; -c1 c4 -1 b1b1b1b1b1b1b1b1 -2 b1b1b1b1b1b1b1b1 -3 b1b1b1b1b1b1b1b1 -4 b1b1b1b1b1b1b1b1 -5 b1b1b1b1b1b1b1b1 -6 b1b1b1b1b1b1b1b1 -*** Select on Slave **** -SELECT * FROM t14a ORDER BY c1; -c1 c4 c5 c6 c7 -1 b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -4 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP -5 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP -6 b1b1b1b1b1b1b1b1 NULL 1 CURRENT_TIMESTAMP -DROP TABLE t14a; -*** connect to master and drop columns *** -ALTER TABLE t14 DROP COLUMN c2; -ALTER TABLE t14 DROP COLUMN c4; -*** Select from Master *** -SELECT * FROM t14 ORDER BY c1; -c1 c3 c5 -1 Replication Testing Extra Col Kyle -2 This Test Should work JOE -3 If is does not, I will open a bug QA -*** Select from Slave *** -SELECT * FROM t14 ORDER BY c1; -c1 c3 c5 c6 c7 -1 Replication Testing Extra Col Kyle 1 CURRENT_TIMESTAMP -2 This Test Should work JOE 1 CURRENT_TIMESTAMP -3 If is does not, I will open a bug QA 1 CURRENT_TIMESTAMP -*** Drop t14 *** -DROP TABLE t14; -*** Create t15 on slave *** -STOP SLAVE; -CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT, -c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE='TokuDB'; -*** Create t15 on Master *** -CREATE TABLE t15 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT, -c4 BLOB, c5 CHAR(5)) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -call mtr.add_suppression("Error .Unknown table .t6.. on query.* Error_code: 1051"); -call mtr.add_suppression("Error .Duplicate column name .c6.. on query.* Error_code: 1060"); -call mtr.add_suppression("Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535"); -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t15 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'), -(2,2.00,'This Test Should work',@b1,'JOE'), -(3,3.00,'If is does not, I will open a bug',@b1,'QA'); -SELECT * FROM t15 ORDER BY c1; -c1 c2 c3 c4 c5 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA -*** Select on Slave **** -SELECT * FROM t15 ORDER BY c1; -c1 c2 c3 c4 c5 c6 c7 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -*** Add column on master that is a Extra on Slave *** -ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5; -******************************************************** -*** Expect slave to fail with Error ER_DUP_FIELDNAME *** -******************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1060] -*** Try to insert in master **** -INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2); -SELECT * FROM t15 ORDER BY c1; -c1 c2 c3 c4 c5 c6 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle NULL -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE NULL -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA NULL -5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 -*** Try to select from slave **** -SELECT * FROM t15 ORDER BY c1; -c1 c2 c3 c4 c5 c6 c7 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 CURRENT_TIMESTAMP -*** DROP TABLE t15 *** -DROP TABLE t15; -*** Create t16 on slave *** -STOP SLAVE; -CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT, -c4 BLOB, c5 CHAR(5), -c6 INT DEFAULT '1', -c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -)ENGINE='TokuDB'; -*** Create t16 on Master *** -CREATE TABLE t16 (c1 INT PRIMARY KEY, c2 DECIMAL(8,2), c3 TEXT, -c4 BLOB, c5 CHAR(5))ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -set @b1 = 'b1b1b1b1'; -set @b1 = concat(@b1,@b1); -INSERT INTO t16 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle'), -(2,2.00,'This Test Should work',@b1,'JOE'), -(3,3.00,'If is does not, I will open a bug',@b1,'QA'); -SELECT * FROM t16 ORDER BY c1; -c1 c2 c3 c4 c5 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA -*** Select on Slave **** -SELECT * FROM t16 ORDER BY c1; -c1 c2 c3 c4 c5 c6 c7 -1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP -2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP -3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP -*** Add Partition on master *** -ALTER TABLE t16 PARTITION BY KEY(c1) PARTITIONS 4; -INSERT INTO t16 () VALUES(4,1.00,'Replication Rocks',@b1,'Omer'); -SHOW CREATE TABLE t16; -Table Create Table -t16 CREATE TABLE `t16` ( - `c1` int(11) NOT NULL, - `c2` decimal(8,2) DEFAULT NULL, - `c3` text, - `c4` blob, - `c5` char(5) DEFAULT NULL, - PRIMARY KEY (`c1`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (c1) -PARTITIONS 4 */ -*** Show table on Slave **** -SHOW CREATE TABLE t16; -Table Create Table -t16 CREATE TABLE `t16` ( - `c1` int(11) NOT NULL, - `c2` decimal(8,2) DEFAULT NULL, - `c3` text, - `c4` blob, - `c5` char(5) DEFAULT NULL, - `c6` int(11) DEFAULT '1', - `c7` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`c1`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (c1) -PARTITIONS 4 */ -*** DROP TABLE t16 *** -DROP TABLE t16; -*** Alter Master End *** -*** Create t17 on slave *** -STOP SLAVE; -CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5), -d FLOAT DEFAULT '2.00', -e CHAR(5) DEFAULT 'TEST2') -ENGINE='TokuDB'; -*** Create t17 on Master *** -CREATE TABLE t17 (a BIGINT PRIMARY KEY, b INT, c CHAR(10) -) ENGINE='TokuDB'; -*** Start Slave *** -include/rpl_reset.inc -*** Master Data Insert *** -INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); -****************************************************************** -*** Expect slave to fail with Error ER_SLAVE_CONVERSION_FAILED *** -****************************************************************** -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -** DROP table t17 *** -DROP TABLE t17; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_mixed_row_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_mixed_row_tokudb.result deleted file mode 100644 index 75cfb927a87..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_mixed_row_tokudb.result +++ /dev/null @@ -1,132 +0,0 @@ -stop slave; -drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; -reset master; -reset slave; -drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; -start slave; -CREATE TABLE t4 ( -id INT(5) unsigned NOT NULL auto_increment, -name varchar(15) NOT NULL default '', -number varchar(35) NOT NULL default 'default', -PRIMARY KEY (id), -UNIQUE KEY unique_rec (name,number) -) ENGINE=TokuDB; -LOAD DATA -INFILE '../../std_data/loaddata_pair.dat' -REPLACE INTO TABLE t4 -(name,number); -SELECT * FROM t4; -id name number -1 XXX 12345 -2 XXY 12345 -SELECT * FROM t4; -id name number -1 XXX 12345 -2 XXY 12345 -LOAD DATA -INFILE '../../std_data/loaddata_pair.dat' -REPLACE INTO TABLE t4 -(name,number); -SELECT * FROM t4; -id name number -4 XXX 12345 -5 XXY 12345 -SELECT * FROM t4; -id name number -4 XXX 12345 -5 XXY 12345 -FLUSH LOGS; -FLUSH LOGS; -DROP DATABASE IF EXISTS mysqltest1; -CREATE DATABASE mysqltest1; -CREATE TEMPORARY TABLE mysqltest1.tmp (f1 BIGINT); -CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="TokuDB"; -SET AUTOCOMMIT = 0; --------- switch to slave -------- -ALTER TABLE mysqltest1.t1 ENGINE = MyISAM; -SHOW CREATE TABLE mysqltest1.t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `f1` bigint(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 --------- switch to master -------- -INSERT INTO mysqltest1.t1 SET f1= 1; -DROP TEMPORARY TABLE mysqltest1.tmp; -ROLLBACK; -SHOW CREATE TABLE mysqltest1.tmp; -ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist -######### Must return no rows here ######### -SELECT COUNT(*) FROM mysqltest1.t1; -COUNT(*) -0 -INSERT INTO mysqltest1.t1 SET f1= 2; -CREATE TEMPORARY TABLE mysqltest1.tmp2(a INT); -ROLLBACK; -SHOW CREATE TABLE mysqltest1.tmp2; -Table Create Table -tmp2 CREATE TEMPORARY TABLE `tmp2` ( - `a` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -######### Must return no rows here ######### -SELECT COUNT(*) FROM mysqltest1.t1; -COUNT(*) -0 --------- switch to slave -------- -SHOW CREATE TABLE mysqltest1.tmp; -ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist -SHOW CREATE TABLE mysqltest1.tmp2; -ERROR 42S02: Table 'mysqltest1.tmp2' doesn't exist -######### t1 has two rows here: the transaction not rolled back since t1 uses MyISAM ######### -SELECT COUNT(*) FROM mysqltest1.t1; -COUNT(*) -2 -FLUSH LOGS; --------- switch to master -------- -FLUSH LOGS; -DROP DATABASE mysqltest1; -End of 5.1 tests -# -# Bug#39675 rename tables on innodb tables with pending -# transactions causes slave data issue. -# -DROP TABLE IF EXISTS t1; -DROP TABLE IF EXISTS t2; -DROP TABLE IF EXISTS t3; -CREATE TABLE t1 ( -id INT PRIMARY KEY auto_increment, -b INT DEFAULT NULL -) ENGINE=TokuDB; -CREATE TABLE t2 ( -id INT PRIMARY KEY auto_increment, -b INT DEFAULT NULL -) ENGINE=TokuDB; -INSERT INTO t1 (b) VALUES (1),(2),(3); -BEGIN; -INSERT INTO t1(b) VALUES (4); --------- switch to master1 -------- -RENAME TABLE t1 TO t3, t2 TO t1;; --------- switch to master -------- -COMMIT; --------- switch to master1 -------- --------- switch to master -------- -SELECT * FROM t1; -id b -SELECT * FROM t3; -id b -1 1 -2 2 -3 3 -4 4 --------- switch to slave -------- -SELECT * FROM t1; -id b -SELECT * FROM t3; -id b -1 1 -2 2 -3 3 -4 4 --------- switch to master -------- -DROP TABLE t1; -DROP TABLE t3; -End of 6.0 tests diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result deleted file mode 100644 index ca044213a31..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_not_null_tokudb.result +++ /dev/null @@ -1,210 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -SET SQL_LOG_BIN= 0; -CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, -`c` INT DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, -`c` INT DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -SET SQL_LOG_BIN= 1; -CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, -`c` INT DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', -`c` INT DEFAULT 500, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -************* EXECUTION WITH INSERTS ************* -INSERT INTO t1(a,b,c) VALUES (1, null, 1); -INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); -INSERT INTO t1(a,b) VALUES (3, null); -INSERT INTO t1(a,c) VALUES (4, 4); -INSERT INTO t1(a) VALUES (5); -INSERT INTO t2(a,b) VALUES (1, null); -INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); -INSERT INTO t2(a) VALUES (3); -INSERT INTO t3(a,b) VALUES (1, null); -INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); -INSERT INTO t3(a) VALUES (3); -INSERT INTO t4(a,b,c) VALUES (1, null, 1); -INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); -INSERT INTO t4(a,b) VALUES (3, null); -INSERT INTO t4(a,c) VALUES (4, 4); -INSERT INTO t4(a) VALUES (5); -************* SHOWING THE RESULT SETS WITH INSERTS ************* -include/sync_slave_sql_with_master.inc -TABLES t1 and t2 must be equal otherwise an error will be thrown. -include/diff_tables.inc [master:t1, slave:t1] -include/diff_tables.inc [master:t2, slave:t2] -TABLES t2 and t3 must be different. -SELECT * FROM t3 ORDER BY a; -a b -1 NULL -2 1111-11-11 -3 NULL -SELECT * FROM t3 ORDER BY a; -a b c -1 NULL 500 -2 1111-11-11 500 -3 NULL 500 -SELECT * FROM t4 ORDER BY a; -a b c -1 NULL 1 -2 1111-11-11 2 -3 NULL NULL -4 NULL 4 -5 NULL NULL -SELECT * FROM t4 ORDER BY a; -a b -1 NULL -2 1111-11-11 -3 NULL -4 NULL -5 NULL -************* EXECUTION WITH UPDATES and REPLACES ************* -DELETE FROM t1; -INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); -REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); -UPDATE t1 set b= NULL, c= 300 where a= 1; -REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); -************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* -include/sync_slave_sql_with_master.inc -TABLES t1 and t2 must be equal otherwise an error will be thrown. -include/diff_tables.inc [master:t1, slave:t1] -************* CLEANING ************* -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -DROP TABLE t4; -include/sync_slave_sql_with_master.inc -SET SQL_LOG_BIN= 0; -CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL, -PRIMARY KEY (`a`)) ENGINE= TokuDB; -SET SQL_LOG_BIN= 1; -CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, -PRIMARY KEY (`a`)) ENGINE= TokuDB; -************* EXECUTION WITH INSERTS ************* -INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); -INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); -INSERT INTO t1(a,b) VALUES (3, null); -INSERT INTO t1(a,c) VALUES (4, b'01'); -INSERT INTO t1(a) VALUES (5); -************* SHOWING THE RESULT SETS WITH INSERTS ************* -TABLES t1 and t2 must be different. -include/sync_slave_sql_with_master.inc -SELECT a,b+0,c+0 FROM t1 ORDER BY a; -a b+0 c+0 -1 NULL 1 -2 0 1 -3 NULL NULL -4 NULL 1 -5 NULL NULL -SELECT a,b+0,c+0 FROM t1 ORDER BY a; -a b+0 c+0 -1 NULL 1 -2 0 1 -3 NULL NULL -4 NULL 1 -5 NULL NULL -************* EXECUTION WITH UPDATES and REPLACES ************* -DELETE FROM t1; -INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); -REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); -UPDATE t1 set b= NULL, c= b'00' where a= 1; -REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); -************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* -TABLES t1 and t2 must be equal otherwise an error will be thrown. -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -include/sync_slave_sql_with_master.inc -################################################################################ -# NULL ---> NOT NULL (STRICT MODE) -# UNCOMMENT THIS AFTER FIXING BUG#43992 -################################################################################ -################################################################################ -# NULL ---> NOT NULL (NON-STRICT MODE) -################################################################################ -SET SQL_LOG_BIN= 0; -CREATE TABLE t1(`a` INT NOT NULL, `b` INT, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t2(`a` INT NOT NULL, `b` INT, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t3(`a` INT NOT NULL, `b` INT, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -SET SQL_LOG_BIN= 1; -CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, -`c` INT NOT NULL, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, -`c` INT, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, -`c` INT DEFAULT 500, -PRIMARY KEY(`a`)) ENGINE=TokuDB DEFAULT CHARSET=LATIN1; -************* EXECUTION WITH INSERTS ************* -INSERT INTO t1(a) VALUES (1); -INSERT INTO t1(a, b) VALUES (2, NULL); -INSERT INTO t1(a, b) VALUES (3, 1); -INSERT INTO t2(a) VALUES (1); -INSERT INTO t2(a, b) VALUES (2, NULL); -INSERT INTO t2(a, b) VALUES (3, 1); -INSERT INTO t3(a) VALUES (1); -INSERT INTO t3(a, b) VALUES (2, NULL); -INSERT INTO t3(a, b) VALUES (3, 1); -INSERT INTO t3(a, b) VALUES (4, 1); -REPLACE INTO t3(a, b) VALUES (5, null); -REPLACE INTO t3(a, b) VALUES (3, null); -UPDATE t3 SET b = NULL where a = 4; -************* SHOWING THE RESULT SETS ************* -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY a; -a b -1 NULL -2 NULL -3 1 -SELECT * FROM t1 ORDER BY a; -a b c -1 0 0 -2 0 0 -3 1 0 -SELECT * FROM t2 ORDER BY a; -a b -1 NULL -2 NULL -3 1 -SELECT * FROM t2 ORDER BY a; -a b c -1 0 NULL -2 0 NULL -3 1 NULL -SELECT * FROM t3 ORDER BY a; -a b -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -SELECT * FROM t3 ORDER BY a; -a b c -1 0 500 -2 0 500 -3 0 500 -4 0 500 -5 0 500 -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb.result deleted file mode 100644 index 7c76cccd4d1..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb.result +++ /dev/null @@ -1,73 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression('Slave: Error dropping database'); -include/stop_slave.inc -start slave; -include/sync_slave_sql_with_master.inc -stop slave sql_thread; -insert into test0.benchmark set state='slave is processing load'; -start slave sql_thread; -use test0; -insert into benchmark set state='slave ends load'; -use test; -select * from test1.benchmark into outfile 'benchmark.out'; -select ts from test0.benchmark where state like 'master started load' into @m_0; -select ts from test0.benchmark where state like 'master ends load' into @m_1; -select ts from test0.benchmark where state like 'slave takes on load' into @s_m0; -select ts from test0.benchmark where state like 'slave is supposed to finish with load' into @s_m1; -select ts from test0.benchmark where state like 'slave ends load' into @s_1; -select ts from test0.benchmark where state like 'slave is processing load' into @s_0; -select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta.out'; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test15.ti_nk, slave:test15.ti_nk] -include/diff_tables.inc [master:test15.ti_wk, slave:test15.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test14.ti_nk, slave:test14.ti_nk] -include/diff_tables.inc [master:test14.ti_wk, slave:test14.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test13.ti_nk, slave:test13.ti_nk] -include/diff_tables.inc [master:test13.ti_wk, slave:test13.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test12.ti_nk, slave:test12.ti_nk] -include/diff_tables.inc [master:test12.ti_wk, slave:test12.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test11.ti_nk, slave:test11.ti_nk] -include/diff_tables.inc [master:test11.ti_wk, slave:test11.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test10.ti_nk, slave:test10.ti_nk] -include/diff_tables.inc [master:test10.ti_wk, slave:test10.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test9.ti_nk, slave:test9.ti_nk] -include/diff_tables.inc [master:test9.ti_wk, slave:test9.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test8.ti_nk, slave:test8.ti_nk] -include/diff_tables.inc [master:test8.ti_wk, slave:test8.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test7.ti_nk, slave:test7.ti_nk] -include/diff_tables.inc [master:test7.ti_wk, slave:test7.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test6.ti_nk, slave:test6.ti_nk] -include/diff_tables.inc [master:test6.ti_wk, slave:test6.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test5.ti_nk, slave:test5.ti_nk] -include/diff_tables.inc [master:test5.ti_wk, slave:test5.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test4.ti_nk, slave:test4.ti_nk] -include/diff_tables.inc [master:test4.ti_wk, slave:test4.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test3.ti_nk, slave:test3.ti_nk] -include/diff_tables.inc [master:test3.ti_wk, slave:test3.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test2.ti_nk, slave:test2.ti_nk] -include/diff_tables.inc [master:test2.ti_wk, slave:test2.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test1.ti_nk, slave:test1.ti_nk] -include/diff_tables.inc [master:test1.ti_wk, slave:test1.ti_wk] -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:test0.ti_nk, slave:test0.ti_nk] -include/diff_tables.inc [master:test0.ti_wk, slave:test0.ti_wk] -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_delete_pk.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_delete_pk.result deleted file mode 100644 index afbc4b50da8..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_delete_pk.result +++ /dev/null @@ -1,29 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note 1753 slave_transaction_retries is not supported in multi-threaded slave mode. In the event of a transient failure, the slave will not retry the transaction and will stop. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows OFF -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -include/diff_tables.inc [master:test.t, slave:test.t] -delete from t where a=2; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result deleted file mode 100644 index 7aab8947940..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_update_pk_uc0_lookup0.result +++ /dev/null @@ -1,39 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note 1753 slave_transaction_retries is not supported in multi-threaded slave mode. In the event of a transient failure, the slave will not retry the transaction and will stop. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows OFF -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -1 -select * from t; -a b -1 3 -2 2 -3 5 -4 3 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_write_pk.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_write_pk.result deleted file mode 100644 index 64b495350c2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_parallel_tokudb_write_pk.result +++ /dev/null @@ -1,23 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note 1753 slave_transaction_retries is not supported in multi-threaded slave mode. In the event of a transient failure, the slave will not retry the transaction and will stop. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_unique_checks%'; -Variable_name Value -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_partition_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_partition_tokudb.result deleted file mode 100644 index de9f1fbc122..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_partition_tokudb.result +++ /dev/null @@ -1,150 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -use test; -CREATE TABLE test.regular_tbl(id INT NOT NULL AUTO_INCREMENT, -dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE -CURRENT_TIMESTAMP, user CHAR(255), uuidf VARBINARY(255), -fkid INT, filler VARCHAR(255), -PRIMARY KEY(id)) -ENGINE=TokuDB; -CREATE TABLE test.byrange_tbl(id INT NOT NULL AUTO_INCREMENT, -dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE -CURRENT_TIMESTAMP, user CHAR(255), uuidf VARBINARY(255), -fkid INT, filler VARCHAR(255), -PRIMARY KEY(id)) -ENGINE=TokuDB -PARTITION BY RANGE(id) -(PARTITION pa100 values less than (100), -PARTITION paMax values less than MAXVALUE); -CREATE PROCEDURE test.proc_norm() -BEGIN -DECLARE ins_count INT DEFAULT 99; -DECLARE cur_user VARCHAR(255); -DECLARE local_uuid VARCHAR(255); -SET cur_user= "current_user@localhost"; -SET local_uuid= "36774b1c-6374-11df-a2ca-0ef7ac7a5f6c"; -WHILE ins_count > 0 DO -# Must use local variables for statment based replication -INSERT INTO test.regular_tbl VALUES (NULL, NOW(), cur_user, local_uuid, -ins_count,'Non partitioned table! Going to test replication for MySQL'); -SET ins_count = ins_count - 1; -END WHILE; -END| -CREATE PROCEDURE test.proc_byrange() -BEGIN -DECLARE ins_count INT DEFAULT 200; -DECLARE cur_user VARCHAR(255); -DECLARE local_uuid VARCHAR(255); -SET cur_user= "current_user@localhost"; -SET local_uuid= "36774b1c-6374-11df-a2ca-0ef7ac7a5f6c"; -WHILE ins_count > 0 DO -INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), cur_user, local_uuid, -ins_count + 100,'Partitioned table! Going to test replication for MySQL'); -SET ins_count = ins_count - 1; -END WHILE; -END| -CALL test.proc_norm(); -SELECT count(*) as "Master regular" FROM test.regular_tbl; -Master regular -99 -CALL test.proc_byrange(); -SELECT count(*) as "Master byrange" FROM test.byrange_tbl; -Master byrange -200 -show create table test.byrange_tbl; -Table Create Table -byrange_tbl CREATE TABLE `byrange_tbl` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` char(255) DEFAULT NULL, - `uuidf` varbinary(255) DEFAULT NULL, - `fkid` int(11) DEFAULT NULL, - `filler` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=TokuDB AUTO_INCREMENT=201 DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY RANGE (id) -(PARTITION pa100 VALUES LESS THAN (100) ENGINE = TokuDB, - PARTITION paMax VALUES LESS THAN MAXVALUE ENGINE = TokuDB) */ -show create table test.regular_tbl; -Table Create Table -regular_tbl CREATE TABLE `regular_tbl` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` char(255) DEFAULT NULL, - `uuidf` varbinary(255) DEFAULT NULL, - `fkid` int(11) DEFAULT NULL, - `filler` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=TokuDB AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 -ALTER TABLE test.byrange_tbl EXCHANGE PARTITION pa100 WITH TABLE test.regular_tbl; -SELECT * FROM test.byrange_tbl ORDER BY fkid LIMIT 2; -id dt user uuidf fkid filler -99 date-time USER UUID 1 Non partitioned table! Going to test replication for MySQL -98 date-time USER UUID 2 Non partitioned table! Going to test replication for MySQL -SELECT * FROM test.byrange_tbl ORDER BY fkid DESC LIMIT 2; -id dt user uuidf fkid filler -100 date-time USER UUID 201 Partitioned table! Going to test replication for MySQL -101 date-time USER UUID 200 Partitioned table! Going to test replication for MySQL -SELECT * FROM test.regular_tbl ORDER BY fkid LIMIT 2; -id dt user uuidf fkid filler -99 date-time USER UUID 202 Partitioned table! Going to test replication for MySQL -98 date-time USER UUID 203 Partitioned table! Going to test replication for MySQL -SELECT * FROM test.regular_tbl ORDER BY fkid DESC LIMIT 2; -id dt user uuidf fkid filler -1 date-time USER UUID 300 Partitioned table! Going to test replication for MySQL -2 date-time USER UUID 299 Partitioned table! Going to test replication for MySQL -show create table test.byrange_tbl; -Table Create Table -byrange_tbl CREATE TABLE `byrange_tbl` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` char(255) DEFAULT NULL, - `uuidf` varbinary(255) DEFAULT NULL, - `fkid` int(11) DEFAULT NULL, - `filler` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=TokuDB AUTO_INCREMENT=201 DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY RANGE (id) -(PARTITION pa100 VALUES LESS THAN (100) ENGINE = TokuDB, - PARTITION paMax VALUES LESS THAN MAXVALUE ENGINE = TokuDB) */ -show create table test.regular_tbl; -Table Create Table -regular_tbl CREATE TABLE `regular_tbl` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` char(255) DEFAULT NULL, - `uuidf` varbinary(255) DEFAULT NULL, - `fkid` int(11) DEFAULT NULL, - `filler` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=TokuDB AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 -SELECT count(*) "Slave norm" FROM test.regular_tbl; -Slave norm -99 -SELECT count(*) "Slave byrange" FROM test.byrange_tbl; -Slave byrange -200 -SELECT * FROM test.byrange_tbl ORDER BY fkid LIMIT 2; -id dt user uuidf fkid filler -99 date-time USER UUID 1 Non partitioned table! Going to test replication for MySQL -98 date-time USER UUID 2 Non partitioned table! Going to test replication for MySQL -SELECT * FROM test.byrange_tbl ORDER BY fkid DESC LIMIT 2; -id dt user uuidf fkid filler -100 date-time USER UUID 201 Partitioned table! Going to test replication for MySQL -101 date-time USER UUID 200 Partitioned table! Going to test replication for MySQL -SELECT * FROM test.regular_tbl ORDER BY fkid LIMIT 2; -id dt user uuidf fkid filler -99 date-time USER UUID 202 Partitioned table! Going to test replication for MySQL -98 date-time USER UUID 203 Partitioned table! Going to test replication for MySQL -SELECT * FROM test.regular_tbl ORDER BY fkid DESC LIMIT 2; -id dt user uuidf fkid filler -1 date-time USER UUID 300 Partitioned table! Going to test replication for MySQL -2 date-time USER UUID 299 Partitioned table! Going to test replication for MySQL -DROP PROCEDURE test.proc_norm; -DROP PROCEDURE test.proc_byrange; -DROP TABLE test.regular_tbl; -DROP TABLE test.byrange_tbl; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_relay_space_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_relay_space_tokudb.result deleted file mode 100644 index 20508747c25..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_relay_space_tokudb.result +++ /dev/null @@ -1,27 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -SHOW VARIABLES LIKE 'relay_log_space_limit'; -Variable_name Value -relay_log_space_limit 0 -CREATE TABLE t1 (name varchar(64), age smallint(3))ENGINE=TokuDB; -INSERT INTO t1 SET name='Andy', age=31; -INSERT INTO t1 SET name='Jacob', age=2; -INSERT INTO t1 SET name='Caleb', age=1; -ALTER TABLE t1 ADD id int(8) ZEROFILL AUTO_INCREMENT PRIMARY KEY, -ALGORITHM=COPY; -SELECT * FROM t1 ORDER BY id; -name age id -Andy 31 00000001 -Jacob 2 00000002 -Caleb 1 00000003 -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY id; -name age id -Andy 31 00000001 -Jacob 2 00000002 -Caleb 1 00000003 -DROP TABLE t1; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_rfr_disable_on_expl_pk_absence.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_rfr_disable_on_expl_pk_absence.result deleted file mode 100644 index 981a833aea5..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_rfr_disable_on_expl_pk_absence.result +++ /dev/null @@ -1,47 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression("read free replication is disabled for tokudb table"); -CREATE TABLE t (a int(11), b char(20)) ENGINE = TokuDB; -INSERT INTO t (a, b) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'); -SELECT * FROM t; -a b -1 a -2 b -3 c -4 d -5 e -UPDATE t SET a = a + 10 WHERE b = 'b'; -SELECT * FROM t; -a b -1 a -12 b -3 c -4 d -5 e -SELECT * FROM t; -a b -1 a -12 b -3 c -4 d -5 e -UPDATE t SET a = a + 10 WHERE b = 'b'; -SELECT * FROM t; -a b -1 a -22 b -3 c -4 d -5 e -SELECT * FROM t; -a b -1 a -22 b -3 c -4 d -5 e -DROP TABLE t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result deleted file mode 100644 index 62714d1031c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_basic_3tokudb.result +++ /dev/null @@ -1,679 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)) ENGINE = 'TokuDB' ; -SELECT * FROM t1; -C1 C2 -include/sync_slave_sql_with_master.inc -SELECT * FROM t1; -C1 C2 -INSERT INTO t1 VALUES ('A','B'), ('X','Y'), ('X','X'); -INSERT INTO t1 VALUES ('A','C'), ('X','Z'), ('A','A'); -SELECT * FROM t1 ORDER BY C1,C2; -C1 C2 -A A -A B -A C -X X -X Y -X Z -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY C1,C2; -C1 C2 -A A -A B -A C -X X -X Y -X Z -DELETE FROM t1 WHERE C1 = C2; -SELECT * FROM t1 ORDER BY C1,C2; -C1 C2 -A B -A C -X Y -X Z -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY C1,C2; -C1 C2 -A B -A C -X Y -X Z -UPDATE t1 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C'; -SELECT * FROM t1 ORDER BY C1,C2; -C1 C2 -A B -A I -X Y -X Z -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY C1,C2; -C1 C2 -A B -A I -X Y -X Z -include/assert.inc [Counter for COM_COMMIT is consistent with the number of actual commits] -include/assert.inc [Counter for COM_INSERT is consistent with the number of actual inserts] -include/assert.inc [Counter for COM_DELETE is consistent with the number of actual deletes] -include/assert.inc [Counter for COM_UPDATE is consistent with the number of actual updates] -UPDATE t1 SET c2 = 'Q' WHERE c1 = 'A' AND c2 = 'N'; -SELECT * FROM t1 ORDER BY c1,c2; -C1 C2 -A B -A I -X Y -X Z -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY c1,c2; -C1 C2 -A B -A I -X Y -X Z -CREATE TABLE t2 (c1 INT, c12 char(1), c2 INT, PRIMARY KEY (c1)) ENGINE = 'TokuDB' ; -INSERT INTO t2 -VALUES (1,'A',2), (2,'A',4), (3,'A',9), (4,'A',15), (5,'A',25), -(6,'A',35), (7,'A',50), (8,'A',64), (9,'A',81); -SELECT * FROM t2 ORDER BY c1,c2; -c1 c12 c2 -1 A 2 -2 A 4 -3 A 9 -4 A 15 -5 A 25 -6 A 35 -7 A 50 -8 A 64 -9 A 81 -SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; -c1 c12 c2 -2 A 4 -3 A 9 -5 A 25 -8 A 64 -9 A 81 -include/sync_slave_sql_with_master.inc -SELECT * FROM t2 ORDER BY c1,c2; -c1 c12 c2 -1 A 2 -2 A 4 -3 A 9 -4 A 15 -5 A 25 -6 A 35 -7 A 50 -8 A 64 -9 A 81 -SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; -c1 c12 c2 -2 A 4 -3 A 9 -5 A 25 -8 A 64 -9 A 81 -UPDATE t2 SET c2 = c1*c1 WHERE c2 != c1*c1; -SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; -c1 c12 c2 -1 A 1 -2 A 4 -3 A 9 -4 A 16 -5 A 25 -6 A 36 -7 A 49 -8 A 64 -9 A 81 -include/sync_slave_sql_with_master.inc -SELECT * FROM t2 WHERE c2 = c1 * c1 ORDER BY c1,c2; -c1 c12 c2 -1 A 1 -2 A 4 -3 A 9 -4 A 16 -5 A 25 -6 A 36 -7 A 49 -8 A 64 -9 A 81 -UPDATE t2 SET c12 = 'Q' WHERE c1 = 1 AND c2 = 999; -SELECT * FROM t2 ORDER BY c1,c2; -c1 c12 c2 -1 A 1 -2 A 4 -3 A 9 -4 A 16 -5 A 25 -6 A 36 -7 A 49 -8 A 64 -9 A 81 -include/sync_slave_sql_with_master.inc -SELECT * FROM t2 ORDER BY c1,c2; -c1 c12 c2 -1 A 1 -2 A 4 -3 A 9 -4 A 16 -5 A 25 -6 A 36 -7 A 49 -8 A 64 -9 A 81 -DELETE FROM t2 WHERE c1 % 4 = 0; -SELECT * FROM t2 ORDER BY c1,c2; -c1 c12 c2 -1 A 1 -2 A 4 -3 A 9 -5 A 25 -6 A 36 -7 A 49 -9 A 81 -include/sync_slave_sql_with_master.inc -SELECT * FROM t2 ORDER BY c1,c2; -c1 c12 c2 -1 A 1 -2 A 4 -3 A 9 -5 A 25 -6 A 36 -7 A 49 -9 A 81 -UPDATE t2 SET c12='X'; -CREATE TABLE t3 (C1 CHAR(1), C2 CHAR(1), pk1 INT, C3 CHAR(1), pk2 INT, PRIMARY KEY (pk1,pk2)) ENGINE = 'TokuDB' ; -INSERT INTO t3 VALUES ('A','B',1,'B',1), ('X','Y',2,'B',1), ('X','X',3,'B',1); -INSERT INTO t3 VALUES ('A','C',1,'B',2), ('X','Z',2,'B',2), ('A','A',3,'B',2); -SELECT * FROM t3 ORDER BY C1,C2; -C1 C2 pk1 C3 pk2 -A A 3 B 2 -A B 1 B 1 -A C 1 B 2 -X X 3 B 1 -X Y 2 B 1 -X Z 2 B 2 -include/sync_slave_sql_with_master.inc -SELECT * FROM t3 ORDER BY C1,C2; -C1 C2 pk1 C3 pk2 -A A 3 B 2 -A B 1 B 1 -A C 1 B 2 -X X 3 B 1 -X Y 2 B 1 -X Z 2 B 2 -DELETE FROM t3 WHERE C1 = C2; -SELECT * FROM t3 ORDER BY C1,C2; -C1 C2 pk1 C3 pk2 -A B 1 B 1 -A C 1 B 2 -X Y 2 B 1 -X Z 2 B 2 -include/sync_slave_sql_with_master.inc -SELECT * FROM t3 ORDER BY C1,C2; -C1 C2 pk1 C3 pk2 -A B 1 B 1 -A C 1 B 2 -X Y 2 B 1 -X Z 2 B 2 -UPDATE t3 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C'; -SELECT * FROM t3 ORDER BY C1,C2; -C1 C2 pk1 C3 pk2 -A B 1 B 1 -A I 1 B 2 -X Y 2 B 1 -X Z 2 B 2 -include/sync_slave_sql_with_master.inc -SELECT * FROM t3 ORDER BY C1,C2; -C1 C2 pk1 C3 pk2 -A B 1 B 1 -A I 1 B 2 -X Y 2 B 1 -X Z 2 B 2 -CREATE TABLE t6 (C1 CHAR(1), C2 CHAR(1), C3 INT) ENGINE = 'TokuDB'; -INSERT INTO t6 VALUES ('A','B',1), ('X','Y',2), ('X','X',3); -INSERT INTO t6 VALUES ('A','C',4), ('X','Z',5), ('A','A',6); -SELECT * FROM t6 ORDER BY C3; -C1 C2 C3 -A B 1 -X Y 2 -X X 3 -A C 4 -X Z 5 -A A 6 -include/sync_slave_sql_with_master.inc -SELECT * FROM t6 ORDER BY C3; -C1 C2 C3 -A B 1 -X Y 2 -X X 3 -A C 4 -X Z 5 -A A 6 -DELETE FROM t6 WHERE C1 = C2; -SELECT * FROM t6 ORDER BY C3; -C1 C2 C3 -A B 1 -X Y 2 -A C 4 -X Z 5 -include/sync_slave_sql_with_master.inc -SELECT * FROM t6 ORDER BY C3; -C1 C2 C3 -A B 1 -X Y 2 -A C 4 -X Z 5 -UPDATE t6 SET C2 = 'I' WHERE C1 = 'A' AND C2 = 'C'; -SELECT * FROM t6 ORDER BY C3; -C1 C2 C3 -A B 1 -X Y 2 -A I 4 -X Z 5 -include/sync_slave_sql_with_master.inc -SELECT * FROM t6 ORDER BY C3; -C1 C2 C3 -A B 1 -X Y 2 -A I 4 -X Z 5 -CREATE TABLE t5 (C1 CHAR(1), C2 CHAR(1), C3 INT PRIMARY KEY) ENGINE = 'TokuDB' ; -INSERT INTO t5 VALUES ('A','B',1), ('X','Y',2), ('X','X',3); -INSERT INTO t5 VALUES ('A','C',4), ('X','Z',5), ('A','A',6); -UPDATE t5,t2,t3 SET t5.C2='Q', t2.c12='R', t3.C3 ='S' WHERE t5.C1 = t2.c12 AND t5.C1 = t3.C1; -SELECT * FROM t5,t2,t3 WHERE t5.C2='Q' AND t2.c12='R' AND t3.C3 ='S' ORDER BY t5.C3,t2.c1,t3.pk1,t3.pk2; -C1 C2 C3 c1 c12 c2 C1 C2 pk1 C3 pk2 -X Q 2 1 R 1 X Y 2 S 1 -X Q 2 1 R 1 X Z 2 S 2 -X Q 2 2 R 4 X Y 2 S 1 -X Q 2 2 R 4 X Z 2 S 2 -X Q 2 3 R 9 X Y 2 S 1 -X Q 2 3 R 9 X Z 2 S 2 -X Q 2 5 R 25 X Y 2 S 1 -X Q 2 5 R 25 X Z 2 S 2 -X Q 2 6 R 36 X Y 2 S 1 -X Q 2 6 R 36 X Z 2 S 2 -X Q 2 7 R 49 X Y 2 S 1 -X Q 2 7 R 49 X Z 2 S 2 -X Q 2 9 R 81 X Y 2 S 1 -X Q 2 9 R 81 X Z 2 S 2 -X Q 3 1 R 1 X Y 2 S 1 -X Q 3 1 R 1 X Z 2 S 2 -X Q 3 2 R 4 X Y 2 S 1 -X Q 3 2 R 4 X Z 2 S 2 -X Q 3 3 R 9 X Y 2 S 1 -X Q 3 3 R 9 X Z 2 S 2 -X Q 3 5 R 25 X Y 2 S 1 -X Q 3 5 R 25 X Z 2 S 2 -X Q 3 6 R 36 X Y 2 S 1 -X Q 3 6 R 36 X Z 2 S 2 -X Q 3 7 R 49 X Y 2 S 1 -X Q 3 7 R 49 X Z 2 S 2 -X Q 3 9 R 81 X Y 2 S 1 -X Q 3 9 R 81 X Z 2 S 2 -X Q 5 1 R 1 X Y 2 S 1 -X Q 5 1 R 1 X Z 2 S 2 -X Q 5 2 R 4 X Y 2 S 1 -X Q 5 2 R 4 X Z 2 S 2 -X Q 5 3 R 9 X Y 2 S 1 -X Q 5 3 R 9 X Z 2 S 2 -X Q 5 5 R 25 X Y 2 S 1 -X Q 5 5 R 25 X Z 2 S 2 -X Q 5 6 R 36 X Y 2 S 1 -X Q 5 6 R 36 X Z 2 S 2 -X Q 5 7 R 49 X Y 2 S 1 -X Q 5 7 R 49 X Z 2 S 2 -X Q 5 9 R 81 X Y 2 S 1 -X Q 5 9 R 81 X Z 2 S 2 -include/sync_slave_sql_with_master.inc -SELECT * FROM t5,t2,t3 WHERE t5.C2='Q' AND t2.c12='R' AND t3.C3 ='S' ORDER BY t5.C3,t2.c1,t3.pk1,t3.pk2; -C1 C2 C3 c1 c12 c2 C1 C2 pk1 C3 pk2 -X Q 2 1 R 1 X Y 2 S 1 -X Q 2 1 R 1 X Z 2 S 2 -X Q 2 2 R 4 X Y 2 S 1 -X Q 2 2 R 4 X Z 2 S 2 -X Q 2 3 R 9 X Y 2 S 1 -X Q 2 3 R 9 X Z 2 S 2 -X Q 2 5 R 25 X Y 2 S 1 -X Q 2 5 R 25 X Z 2 S 2 -X Q 2 6 R 36 X Y 2 S 1 -X Q 2 6 R 36 X Z 2 S 2 -X Q 2 7 R 49 X Y 2 S 1 -X Q 2 7 R 49 X Z 2 S 2 -X Q 2 9 R 81 X Y 2 S 1 -X Q 2 9 R 81 X Z 2 S 2 -X Q 3 1 R 1 X Y 2 S 1 -X Q 3 1 R 1 X Z 2 S 2 -X Q 3 2 R 4 X Y 2 S 1 -X Q 3 2 R 4 X Z 2 S 2 -X Q 3 3 R 9 X Y 2 S 1 -X Q 3 3 R 9 X Z 2 S 2 -X Q 3 5 R 25 X Y 2 S 1 -X Q 3 5 R 25 X Z 2 S 2 -X Q 3 6 R 36 X Y 2 S 1 -X Q 3 6 R 36 X Z 2 S 2 -X Q 3 7 R 49 X Y 2 S 1 -X Q 3 7 R 49 X Z 2 S 2 -X Q 3 9 R 81 X Y 2 S 1 -X Q 3 9 R 81 X Z 2 S 2 -X Q 5 1 R 1 X Y 2 S 1 -X Q 5 1 R 1 X Z 2 S 2 -X Q 5 2 R 4 X Y 2 S 1 -X Q 5 2 R 4 X Z 2 S 2 -X Q 5 3 R 9 X Y 2 S 1 -X Q 5 3 R 9 X Z 2 S 2 -X Q 5 5 R 25 X Y 2 S 1 -X Q 5 5 R 25 X Z 2 S 2 -X Q 5 6 R 36 X Y 2 S 1 -X Q 5 6 R 36 X Z 2 S 2 -X Q 5 7 R 49 X Y 2 S 1 -X Q 5 7 R 49 X Z 2 S 2 -X Q 5 9 R 81 X Y 2 S 1 -X Q 5 9 R 81 X Z 2 S 2 -SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY'; -CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = 'TokuDB' ; -INSERT INTO t4 SET C1 = 1; -SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1; -C1 HEX(B1) HEX(B2) -1 NULL 0 -include/sync_slave_sql_with_master.inc -SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1; -C1 HEX(B1) HEX(B2) -1 NULL 0 -SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; -CREATE TABLE t7 (C1 INT PRIMARY KEY, C2 INT) ENGINE = 'TokuDB' ; -include/sync_slave_sql_with_master.inc ---- on slave: original values --- -INSERT INTO t7 VALUES (1,3), (2,6), (3,9); -SELECT * FROM t7 ORDER BY C1; -C1 C2 -1 3 -2 6 -3 9 -set @@global.slave_exec_mode= 'IDEMPOTENT'; ---- on master: new values inserted --- -INSERT INTO t7 VALUES (1,2), (2,4), (3,6); -SELECT * FROM t7 ORDER BY C1; -C1 C2 -1 2 -2 4 -3 6 -include/sync_slave_sql_with_master.inc -set @@global.slave_exec_mode= default; ---- on slave: old values should be overwritten by replicated values --- -SELECT * FROM t7 ORDER BY C1; -C1 C2 -1 2 -2 4 -3 6 ---- on master --- -CREATE TABLE t8 (a INT PRIMARY KEY, b INT UNIQUE, c INT UNIQUE) ENGINE = 'TokuDB' ; -INSERT INTO t8 VALUES (99,99,99); -INSERT INTO t8 VALUES (99,22,33); -ERROR 23000: Duplicate entry '99' for key 'PRIMARY' -INSERT INTO t8 VALUES (11,99,33); -ERROR 23000: Duplicate entry '99' for key 'b' -INSERT INTO t8 VALUES (11,22,99); -ERROR 23000: Duplicate entry '99' for key 'c' -SELECT * FROM t8 ORDER BY a; -a b c -99 99 99 -include/sync_slave_sql_with_master.inc ---- on slave --- -SELECT * FROM t8 ORDER BY a; -a b c -99 99 99 -INSERT INTO t8 VALUES (1,2,3), (2,4,6), (3,6,9); -SELECT * FROM t8 ORDER BY a; -a b c -1 2 3 -2 4 6 -3 6 9 -99 99 99 -set @@global.slave_exec_mode= 'IDEMPOTENT'; ---- on master --- -INSERT INTO t8 VALUES (2,4,8); -include/sync_slave_sql_with_master.inc -set @@global.slave_exec_mode= default; ---- on slave --- -SELECT * FROM t8 ORDER BY a; -a b c -1 2 3 -2 4 8 -3 6 9 -99 99 99 -**** Test for BUG#31552 **** -**** On Master **** -DELETE FROM t1; -include/sync_slave_sql_with_master.inc -include/rpl_reset.inc -**** On Master **** -INSERT INTO t1 VALUES ('K','K'), ('L','L'), ('M','M'); -**** On Master **** -include/sync_slave_sql_with_master.inc -set @@global.slave_exec_mode= 'IDEMPOTENT'; -DELETE FROM t1 WHERE C1 = 'L'; -DELETE FROM t1; -SELECT COUNT(*) FROM t1 ORDER BY c1,c2; -COUNT(*) 0 -include/sync_slave_sql_with_master.inc -set @@global.slave_exec_mode= default; -include/check_slave_is_running.inc -SELECT COUNT(*) FROM t1 ORDER BY c1,c2; -COUNT(*) 0 -**** Test for BUG#37076 **** -**** On Master **** -DROP TABLE IF EXISTS t1; -CREATE TABLE t1 (a TIMESTAMP, b DATETIME, c DATE); -INSERT INTO t1 VALUES( -'2005-11-14 01:01:01', '2005-11-14 01:01:02', '2005-11-14'); -**** On Slave **** -include/sync_slave_sql_with_master.inc -SELECT * FROM t1; -a b c -2005-11-14 01:01:01 2005-11-14 01:01:02 2005-11-14 -DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; -include/sync_slave_sql_with_master.inc -CREATE TABLE t1 (i INT NOT NULL, -c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -CREATE TABLE t2 (i INT NOT NULL, -c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -include/sync_slave_sql_with_master.inc -ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; -CREATE TABLE t3 (i INT NOT NULL, -c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -include/sync_slave_sql_with_master.inc -ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; -CREATE TABLE t4 (i INT NOT NULL, -c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -CREATE TABLE t5 (i INT NOT NULL, -c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -include/sync_slave_sql_with_master.inc -ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; -CREATE TABLE t6 (i INT NOT NULL, -c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -include/sync_slave_sql_with_master.inc -ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; -CREATE TABLE t7 (i INT NOT NULL, -c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL) ENGINE = 'TokuDB' ; -SET @saved_slave_type_conversions = @@slave_type_conversions; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY'; -[expecting slave to replicate correctly] -INSERT INTO t1 VALUES (1, "", 1); -INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -[expecting slave to replicate correctly] -INSERT INTO t2 VALUES (1, "", 1); -INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2); -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t2, slave:t2] -SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; -call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535"); -call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.* Error_code: 1032"); -call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t.. cannot be converted from type.*, Error_code: 1677"); -call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); -include/rpl_reset.inc -[expecting slave to replicate correctly] -INSERT INTO t4 VALUES (1, "", 1); -INSERT INTO t4 VALUES (2, repeat(_utf8'a', 128), 2); -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t4, slave:t4] -[expecting slave to stop] -INSERT INTO t5 VALUES (1, "", 1); -INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); -include/wait_for_slave_sql_error.inc [errno=1677] -include/rpl_reset.inc -[expecting slave to stop] -INSERT INTO t6 VALUES (1, "", 1); -INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); -include/wait_for_slave_sql_error.inc [errno=1677] -include/rpl_reset.inc -[expecting slave to replicate correctly] -INSERT INTO t7 VALUES (1, "", 1); -INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t7, slave:t7] -drop table t1, t2, t3, t4, t5, t6, t7; -include/sync_slave_sql_with_master.inc -CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='TokuDB'; -INSERT INTO t1 VALUES (1), (2), (3); -UPDATE t1 SET a = 10; -ERROR 23000: Duplicate entry '10' for key 'PRIMARY' -INSERT INTO t1 VALUES (4); -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -drop table t1; -include/sync_slave_sql_with_master.inc -DROP TABLE IF EXISTS t1, t2; -CREATE TABLE t1 ( -`pk` int(11) NOT NULL AUTO_INCREMENT, -`int_nokey` int(11) NOT NULL, -`int_key` int(11) NOT NULL, -`date_key` date NOT NULL, -`date_nokey` date NOT NULL, -`time_key` time NOT NULL, -`time_nokey` time NOT NULL, -`datetime_key` datetime NOT NULL, -`datetime_nokey` datetime NOT NULL, -`varchar_key` varchar(1) NOT NULL, -`varchar_nokey` varchar(1) NOT NULL, -PRIMARY KEY (`pk`), -KEY `int_key` (`int_key`), -KEY `date_key` (`date_key`), -KEY `time_key` (`time_key`), -KEY `datetime_key` (`datetime_key`), -KEY `varchar_key` (`varchar_key`) -) ENGINE='TokuDB'; -INSERT INTO t1 VALUES (1,8,5,'0000-00-00','0000-00-00','10:37:38','10:37:38','0000-00-00 00:00:00','0000-00-00 00:00:00','p','p'),(2,0,9,'0000-00-00','0000-00-00','00:00:00','00:00:00','2007-10-14 00:00:00','2007-10-14 00:00:00','d','d'); -CREATE TABLE t2 ( -`pk` int(11) NOT NULL AUTO_INCREMENT, -`int_nokey` int(11) NOT NULL, -`int_key` int(11) NOT NULL, -`date_key` date NOT NULL, -`date_nokey` date NOT NULL, -`time_key` time NOT NULL, -`time_nokey` time NOT NULL, -`datetime_key` datetime NOT NULL, -`datetime_nokey` datetime NOT NULL, -`varchar_key` varchar(1) NOT NULL, -`varchar_nokey` varchar(1) NOT NULL, -PRIMARY KEY (`pk`), -KEY `int_key` (`int_key`), -KEY `date_key` (`date_key`), -KEY `time_key` (`time_key`), -KEY `datetime_key` (`datetime_key`), -KEY `varchar_key` (`varchar_key`) -) ENGINE='TokuDB'; -INSERT INTO t2 VALUES (1,1,6,'2005-12-23','2005-12-23','02:24:28','02:24:28','0000-00-00 00:00:00','0000-00-00 00:00:00','g','g'),(2,0,3,'2009-09-14','2009-09-14','00:00:00','00:00:00','2000-01-30 16:39:40','2000-01-30 16:39:40','q','q'),(3,0,3,'0000-00-00','0000-00-00','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','c','c'),(4,1,6,'2007-03-29','2007-03-29','15:49:00','15:49:00','0000-00-00 00:00:00','0000-00-00 00:00:00','m','m'),(5,4,0,'2002-12-04','2002-12-04','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),(6,9,0,'2005-01-28','2005-01-28','00:00:00','00:00:00','2001-05-18 00:00:00','2001-05-18 00:00:00','w','w'),(7,6,0,'0000-00-00','0000-00-00','06:57:25','06:57:25','0000-00-00 00:00:00','0000-00-00 00:00:00','m','m'),(8,0,0,'0000-00-00','0000-00-00','00:00:00','00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','z','z'),(9,4,6,'2006-08-15','2006-08-15','00:00:00','00:00:00','2002-04-12 14:44:25','2002-04-12 14:44:25','j','j'),(10,0,5,'2006-12-20','2006-12-20','10:13:53','10:13:53','2008-07-22 00:00:00','2008-07-22 00:00:00','y','y'),(11,9,7,'0000-00-00','0000-00-00','00:00:00','00:00:00','2004-07-05 00:00:00','2004-07-05 00:00:00','{','{'),(12,4,3,'2007-01-26','2007-01-26','23:00:51','23:00:51','2001-05-16 00:00:00','2001-05-16 00:00:00','f','f'),(13,7,0,'2004-03-27','2004-03-27','00:00:00','00:00:00','2005-01-24 03:30:37','2005-01-24 03:30:37','',''),(14,6,0,'2006-07-26','2006-07-26','18:43:57','18:43:57','0000-00-00 00:00:00','0000-00-00 00:00:00','{','{'),(15,0,6,'2000-01-14','2000-01-14','00:00:00','00:00:00','2000-09-21 00:00:00','2000-09-21 00:00:00','o','o'),(16,9,8,'0000-00-00','0000-00-00','21:15:08','21:15:08','0000-00-00 00:00:00','0000-00-00 00:00:00','a','a'),(17,2,0,'2004-10-27','2004-10-27','00:00:00','00:00:00','2004-03-24 22:13:43','2004-03-24 22:13:43','',''),(18,7,4,'0000-00-00','0000-00-00','08:38:27','08:38:27','2002-03-18 19:51:44','2002-03-18 19:51:44','t','t'),(19,5,3,'2008-03-07','2008-03-07','03:29:07','03:29:07','2007-12-01 18:44:44','2007-12-01 18:44:44','t','t'),(20,0,0,'2002-04-09','2002-04-09','16:06:03','16:06:03','2009-04-22 00:00:00','2009-04-22 00:00:00','n','n'); -DELETE FROM t2 WHERE `int_key` < 3 LIMIT 1; -UPDATE t1 SET `int_key` = 3 ORDER BY `pk` LIMIT 4; -DELETE FROM t2 WHERE `int_key` < 3 LIMIT 1; -DELETE FROM t2 WHERE `pk` < 6 LIMIT 1; -UPDATE t1 SET `int_key` = 6 ORDER BY `pk` LIMIT 3; -DELETE FROM t2 WHERE `pk` < 6 LIMIT 1; -UPDATE t1 SET `pk` = 6 ORDER BY `int_key` LIMIT 6; -ERROR 23000: Duplicate entry '6' for key 'PRIMARY' -DELETE FROM t2 WHERE `pk` < 7 LIMIT 1; -UPDATE t1 SET `int_key` = 4 ORDER BY `pk` LIMIT 6; -include/sync_slave_sql_with_master.inc -*** results: t2 must be consistent **** -include/diff_tables.inc [master:t2, slave:t2] -DROP TABLE t1, t2; -EOF OF TESTS -CREATE TABLE t1 (a int) ENGINE='TokuDB'; -INSERT IGNORE INTO t1 VALUES (NULL); -INSERT INTO t1 ( a ) VALUES ( 0 ); -INSERT INTO t1 ( a ) VALUES ( 9 ); -INSERT INTO t1 ( a ) VALUES ( 2 ); -INSERT INTO t1 ( a ) VALUES ( 9 ); -INSERT INTO t1 ( a ) VALUES ( 5 ); -UPDATE t1 SET a = 5 WHERE a = 9; -DELETE FROM t1 WHERE a < 6; -UPDATE t1 SET a = 9 WHERE a < 3; -INSERT INTO t1 ( a ) VALUES ( 3 ); -UPDATE t1 SET a = 0 WHERE a < 4; -UPDATE t1 SET a = 8 WHERE a < 5; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -drop table t1; -include/sync_slave_sql_with_master.inc -SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_LOSSY'; -CREATE TABLE t1 (a bit) ENGINE='TokuDB'; -INSERT IGNORE INTO t1 VALUES (NULL); -INSERT INTO t1 ( a ) VALUES ( 0 ); -UPDATE t1 SET a = 0 WHERE a = 1 LIMIT 3; -INSERT INTO t1 ( a ) VALUES ( 5 ); -DELETE FROM t1 WHERE a < 2 LIMIT 4; -DELETE FROM t1 WHERE a < 9 LIMIT 4; -INSERT INTO t1 ( a ) VALUES ( 9 ); -UPDATE t1 SET a = 8 WHERE a = 0 LIMIT 6; -INSERT INTO t1 ( a ) VALUES ( 8 ); -UPDATE t1 SET a = 0 WHERE a < 6 LIMIT 0; -INSERT INTO t1 ( a ) VALUES ( 4 ); -INSERT INTO t1 ( a ) VALUES ( 3 ); -UPDATE t1 SET a = 0 WHERE a = 7 LIMIT 6; -DELETE FROM t1 WHERE a = 4 LIMIT 7; -UPDATE t1 SET a = 9 WHERE a < 2 LIMIT 9; -UPDATE t1 SET a = 0 WHERE a < 9 LIMIT 2; -DELETE FROM t1 WHERE a < 0 LIMIT 5; -INSERT INTO t1 ( a ) VALUES ( 5 ); -UPDATE t1 SET a = 4 WHERE a < 6 LIMIT 4; -INSERT INTO t1 ( a ) VALUES ( 5 ); -UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 8; -DELETE FROM t1 WHERE a < 8 LIMIT 8; -INSERT INTO t1 ( a ) VALUES ( 6 ); -DELETE FROM t1 WHERE a < 6 LIMIT 7; -UPDATE t1 SET a = 7 WHERE a = 3 LIMIT 7; -UPDATE t1 SET a = 8 WHERE a = 0 LIMIT 6; -INSERT INTO t1 ( a ) VALUES ( 7 ); -DELETE FROM t1 WHERE a < 9 LIMIT 4; -INSERT INTO t1 ( a ) VALUES ( 7 ); -INSERT INTO t1 ( a ) VALUES ( 6 ); -UPDATE t1 SET a = 8 WHERE a = 3 LIMIT 4; -DELETE FROM t1 WHERE a = 2 LIMIT 9; -DELETE FROM t1 WHERE a = 1 LIMIT 4; -UPDATE t1 SET a = 4 WHERE a = 2 LIMIT 7; -INSERT INTO t1 ( a ) VALUES ( 0 ); -DELETE FROM t1 WHERE a < 3 LIMIT 0; -UPDATE t1 SET a = 8 WHERE a = 5 LIMIT 2; -INSERT INTO t1 ( a ) VALUES ( 1 ); -UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 3; -include/sync_slave_sql_with_master.inc -SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; -include/diff_tables.inc [master:t1, slave:t1] -drop table t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_blob_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_blob_tokudb.result deleted file mode 100644 index 0741a616eda..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_blob_tokudb.result +++ /dev/null @@ -1,161 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -DROP TABLE IF EXISTS test.t1; -DROP TABLE IF EXISTS test.t2; -***** Table Create Section **** - -CREATE TABLE test.t1 (c1 int not null auto_increment, -data LONGBLOB, PRIMARY KEY(c1))ENGINE=#; - -**** Data Insert Section test.t1 ***** - -INSERT INTO test.t1 VALUES (NULL, NULL); -INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024)); -INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024)); - -**** Data Insert Validation Master Section test.t1 **** - -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; -LENGTH(data) -NULL -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; -LENGTH(data) -1024 -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; -LENGTH(data) -16384 -include/sync_slave_sql_with_master.inc - -**** Data Insert Validation Slave Section test.t1 **** - -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; -LENGTH(data) -NULL -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; -LENGTH(data) -1024 -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; -LENGTH(data) -16384 - -**** Data Update Section test.t1 **** - -UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1; -UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; - -**** Data Update Validation Master Section test.t1 **** - -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; -LENGTH(data) -18432 -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; -LENGTH(data) -17408 -include/sync_slave_sql_with_master.inc - -**** Data Update Validation Slave Section test.t1 **** - -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; -LENGTH(data) -18432 -SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; -LENGTH(data) -17408 - -**** End Test Section test.t1 **** - -**** Create Table test.t2 **** - -CREATE TABLE test.t2 ( -c1 INT NOT NULL PRIMARY KEY, -c2 TEXT, -c3 INT, -c4 LONGBLOB, -KEY(c3))ENGINE=#; - -*** Setup Values For test.t2 *** -set @x0 = '01234567012345670123456701234567'; -set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0); -set @b1 = 'b1'; -set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); -set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); -set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); -set @b1 = concat(@b1,@x0); -set @d1 = 'dd1'; -set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); -set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); -set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); -set @b2 = 'b2'; -set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); -set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); -set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); -set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); -set @d2 = 'dd2'; -set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); -set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); -set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); -set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); - -**** Data Insert Section test.t2 ***** - -INSERT INTO test.t2 VALUES(1,@b1,111,@d1); -INSERT INTO test.t2 VALUES(2,@b2,222,@d2); - -**** Data Insert Validation Master Section test.t2 **** - -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=1; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -1 2256 b1 3000 dd1 -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=2; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -2 20000 b2 30000 dd2 -include/sync_slave_sql_with_master.inc - -**** Data Insert Validation Slave Section test.t2 **** - -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=1; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -1 2256 b1 3000 dd1 -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=2; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -2 20000 b2 30000 dd2 - -**** Data Update Section test.t2 **** - -UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1; -UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2; - -**** Data Update Validation Master Section test.t2 **** - -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=1; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -1 20000 b2 30000 dd2 -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=2; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -2 2256 b1 3000 dd1 -include/sync_slave_sql_with_master.inc - -**** Data Update Validation Slave Section test.t2 **** - -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=1; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -1 20000 b2 30000 dd2 -SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) -FROM test.t2 WHERE c1=2; -c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) -2 2256 b1 3000 dd1 - -DROP TABLE IF EXISTS test.t1; -DROP TABLE IF EXISTS test.t2; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_log_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_log_tokudb.result deleted file mode 100644 index 87ffbca71bc..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_log_tokudb.result +++ /dev/null @@ -1,275 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -include/sync_slave_sql_with_master.inc -include/stop_slave.inc -include/wait_for_slave_to_stop.inc -reset master; -reset slave; -start slave; -include/wait_for_slave_to_start.inc -create table t1(n int not null auto_increment primary key)ENGINE=TokuDB; -insert into t1 values (NULL); -drop table t1; -create table t1 (word char(20) not null)ENGINE=TokuDB; -load data infile 'LOAD_FILE' into table t1 ignore 1 lines; -select count(*) from t1; -count(*) -69 -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ -master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -flush logs; -create table t3 (a int)ENGINE=TokuDB; -select * from t1 order by 1 asc; -word -Aarhus -Aaron -Aaron -Ababa -Ababa -aback -aback -abaft -abaft -abandon -abandon -abandoned -abandoned -abandoning -abandoning -abandonment -abandonment -abandons -abandons -abase -abased -abasement -abasements -abases -abash -abashed -abashes -abashing -abasing -abate -abated -abatement -abatements -abater -abates -abating -Abba -abbe -abbey -abbeys -abbot -abbots -Abbott -abbreviate -abbreviated -abbreviates -abbreviating -abbreviation -abbreviations -Abby -abdomen -abdomens -abdominal -abduct -abducted -abduction -abductions -abductor -abductors -abducts -Abe -abed -Abel -Abelian -Abelson -Aberdeen -Abernathy -aberrant -aberration -include/sync_slave_sql_with_master.inc -select * from t1 order by 1 asc; -word -Aarhus -Aaron -Aaron -Ababa -Ababa -aback -aback -abaft -abaft -abandon -abandon -abandoned -abandoned -abandoning -abandoning -abandonment -abandonment -abandons -abandons -abase -abased -abasement -abasements -abases -abash -abashed -abashes -abashing -abasing -abate -abated -abatement -abatements -abater -abates -abating -Abba -abbe -abbey -abbeys -abbot -abbots -Abbott -abbreviate -abbreviated -abbreviates -abbreviating -abbreviation -abbreviations -Abby -abdomen -abdomens -abdominal -abduct -abducted -abduction -abductions -abductor -abductors -abducts -Abe -abed -Abel -Abelian -Abelson -Aberdeen -Abernathy -aberrant -aberration -flush logs; -include/stop_slave.inc -include/start_slave.inc -create table t2 (n int)ENGINE=TokuDB; -insert into t2 values (1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ -master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Rotate # # master-bin.000002;pos=POS -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB -master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB -master-bin.000002 # Query # # BEGIN -master-bin.000002 # Table_map # # table_id: # (test.t2) -master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000002 # Xid # # COMMIT /* XID */ -show binary logs; -Log_name File_size -master-bin.000001 # -master-bin.000002 # -include/sync_slave_sql_with_master.inc -show binary logs; -Log_name File_size -slave-bin.000001 # -slave-bin.000002 # -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -slave-bin.000001 # Query # # BEGIN -slave-bin.000001 # Table_map # # table_id: # (test.t1) -slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -slave-bin.000001 # Xid # # COMMIT /* XID */ -slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ -slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB -slave-bin.000001 # Query # # BEGIN -slave-bin.000001 # Table_map # # table_id: # (test.t1) -slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -slave-bin.000001 # Xid # # COMMIT /* XID */ -slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB -slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB -slave-bin.000002 # Query # # BEGIN -slave-bin.000002 # Table_map # # table_id: # (test.t2) -slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F -slave-bin.000002 # Xid # # COMMIT /* XID */ -include/check_slave_is_running.inc -show binlog events in 'slave-bin.000005' from 4; -ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -include/rpl_reset.inc -create table t1(a int auto_increment primary key, b int); -insert into t1 values (NULL, 1); -set insert_id=5; -insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -select * from t1; -a b -1 1 -5 1 -6 1 -drop table t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_rec_comp_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_rec_comp_tokudb.result deleted file mode 100644 index 8dcea0daff7..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_rec_comp_tokudb.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -## case #1 - last_null_bit_pos==0 in record_compare without X bit -include/rpl_reset.inc -CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=TokuDB DEFAULT CHARSET=latin1; -INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); -INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); -UPDATE t1 SET c5 = 'a'; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -include/sync_slave_sql_with_master.inc -## case #1.1 - last_null_bit_pos==0 in record_compare with X bit -## (1 column less and no varchar) -include/rpl_reset.inc -CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=TokuDB DEFAULT CHARSET=latin1; -INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); -INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); -UPDATE t1 SET c5 = 'a'; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -include/sync_slave_sql_with_master.inc -## case #2 - X bit is wrongly set. -include/rpl_reset.inc -CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=TokuDB DEFAULT CHARSET= latin1; -INSERT INTO t1(c1) VALUES (10); -INSERT INTO t1(c1) VALUES (NULL); -UPDATE t1 SET c1= 0; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp002_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp002_tokudb.result deleted file mode 100644 index 65fecef606b..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp002_tokudb.result +++ /dev/null @@ -1,233 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -CREATE TABLE test.t1 (a INT AUTO_INCREMENT KEY, t CHAR(6)) ENGINE=TokuDB; -CREATE TABLE test.t2 (a INT AUTO_INCREMENT KEY, f INT, FOREIGN KEY(a) REFERENCES test.t1(a) ON DELETE CASCADE) ENGINE=TokuDB; -create procedure test.p1(IN i CHAR(6)) -begin -INSERT INTO test.t1 (t) VALUES (i); -INSERT INTO test.t2 VALUES (NULL,LAST_INSERT_ID()); -end| -create procedure test.p2(IN i INT) -begin -DELETE FROM test.t1 where a < i; -end| - -< -- test 1 call p1 -- > ------------------------- -SET FOREIGN_KEY_CHECKS=1; -call test.p1('texas'); -call test.p1('Live'); -call test.p1('next'); -call test.p1('to'); -call test.p1('OK'); -call test.p1('MySQL'); - -< -- test 1 select master after p1 -- > ---------------------------------------- -SELECT * FROM test.t1; -a t -1 texas -2 Live -3 next -4 to -5 OK -6 MySQL -SELECT * FROM test.t2; -a f -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 - -< -- test 1 select slave after p1 -- > --------------------------------------- -SELECT * FROM test.t1; -a t -1 texas -2 Live -3 next -4 to -5 OK -6 MySQL -SELECT * FROM test.t2; -a f -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 - -< -- test 1 call p2 & select master -- > ----------------------------------------- -call test.p2(4); -SELECT * FROM test.t1; -a t -4 to -5 OK -6 MySQL -SELECT * FROM test.t2; -a f -4 4 -5 5 -6 6 - -< -- test 1 select slave after p2 -- > --------------------------------------- -SELECT * FROM test.t1; -a t -4 to -5 OK -6 MySQL -SELECT * FROM test.t2; -a f -4 4 -5 5 -6 6 - -< -- End test 1 Begin test 2 -- > ---------------------------------- -SET FOREIGN_KEY_CHECKS=0; -DROP PROCEDURE IF EXISTS test.p1; -DROP PROCEDURE IF EXISTS test.p2; -DROP TABLE IF EXISTS test.t1; -DROP TABLE IF EXISTS test.t2; -CREATE TABLE test.t1 (a INT, t CHAR(6), PRIMARY KEY(a)) ENGINE=TokuDB; -CREATE TABLE test.t2 (a INT, f INT, FOREIGN KEY(a) REFERENCES test.t1(a) ON UPDATE CASCADE, PRIMARY KEY(a)) ENGINE=TokuDB; -CREATE PROCEDURE test.p1(IN nm INT, IN ch CHAR(6)) -BEGIN -INSERT INTO test.t1 (a,t) VALUES (nm, ch); -INSERT INTO test.t2 VALUES (nm, LAST_INSERT_ID()); -END| -CREATE PROCEDURE test.p2(IN i INT) -BEGIN -UPDATE test.t1 SET a = i*10 WHERE a = i; -END| -SET FOREIGN_KEY_CHECKS=1; -CALL test.p1(1,'texas'); -CALL test.p1(2,'Live'); -CALL test.p1(3,'next'); -CALL test.p1(4,'to'); -CALL test.p1(5,'OK'); -CALL test.p1(6,'MySQL'); - -< -- test 2 select Master after p1 -- > ---------------------------------------- -SELECT * FROM test.t1; -a t -1 texas -2 Live -3 next -4 to -5 OK -6 MySQL -SELECT * FROM test.t2; -a f -1 6 -2 6 -3 6 -4 6 -5 6 -6 6 - -< -- test 2 select Slave after p1 -- > --------------------------------------- -SELECT * FROM test.t1; -a t -1 texas -2 Live -3 next -4 to -5 OK -6 MySQL -SELECT * FROM test.t2; -a f -1 6 -2 6 -3 6 -4 6 -5 6 -6 6 - -< -- test 2 call p2 & select Master -- > ----------------------------------------- -CALL test.p2(2); -CALL test.p2(4); -CALL test.p2(6); -SELECT * FROM test.t1; -a t -1 texas -3 next -5 OK -20 Live -40 to -60 MySQL -SELECT * FROM test.t2; -a f -1 6 -3 6 -5 6 -20 6 -40 6 -60 6 - -< -- test 1 select Slave after p2 -- > --------------------------------------- -SELECT * FROM test.t1; -a t -1 texas -3 next -5 OK -20 Live -40 to -60 MySQL -SELECT * FROM test.t2; -a f -1 6 -3 6 -5 6 -20 6 -40 6 -60 6 - -< -- End test 2 Begin test 3 -- > ---------------------------------- -CREATE TABLE test.t3 (a INT AUTO_INCREMENT KEY, t CHAR(6))ENGINE=TokuDB; -CREATE PROCEDURE test.p3(IN n INT) -begin -CASE n -WHEN 2 THEN -DELETE from test.t3; -ELSE -INSERT INTO test.t3 VALUES (NULL,'NONE'); -END CASE; -end| -SET AUTOCOMMIT=0; -START TRANSACTION; -ROLLBACK; -select * from test.t3; -a t -select * from test.t3; -a t -START TRANSACTION; -COMMIT; -select * from test.t3; -a t -98 NONE -select * from test.t3; -a t -98 NONE -SET AUTOCOMMIT=1; -SET FOREIGN_KEY_CHECKS=0; -DROP PROCEDURE test.p3; -DROP PROCEDURE test.p1; -DROP PROCEDURE test.p2; -DROP TABLE test.t1; -DROP TABLE test.t2; -DROP TABLE test.t3; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp007_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp007_tokudb.result deleted file mode 100644 index b783e42bd7b..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_sp007_tokudb.result +++ /dev/null @@ -1,48 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -CREATE PROCEDURE test.p1(IN i INT) -BEGIN -DECLARE CONTINUE HANDLER FOR sqlexception BEGIN END; -DROP TABLE IF EXISTS test.t1; -CREATE TABLE test.t1 (num INT,PRIMARY KEY(num))ENGINE=TokuDB; -START TRANSACTION; -INSERT INTO test.t1 VALUES(i); -savepoint t1_save; -INSERT INTO test.t1 VALUES (14); -ROLLBACK to savepoint t1_save; -COMMIT; -END| - -< ---- Master selects-- > -------------------------- -CALL test.p1(12); -SELECT * FROM test.t1; -num -12 - -< ---- Slave selects-- > ------------------------- -include/sync_slave_sql_with_master.inc -SELECT * FROM test.t1; -num -12 - -< ---- Master selects-- > -------------------------- -CALL test.p1(13); -SELECT * FROM test.t1; -num -13 - -< ---- Slave selects-- > ------------------------- -include/sync_slave_sql_with_master.inc -SELECT * FROM test.t1; -num -13 -DROP PROCEDURE test.p1; -DROP TABLE test.t1; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_tabledefs_3tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_tabledefs_3tokudb.result deleted file mode 100644 index 13e80030937..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_row_tabledefs_3tokudb.result +++ /dev/null @@ -1,190 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -STOP SLAVE; -SET @my_sql_mode= @@global.sql_mode; -SET GLOBAL SQL_MODE='STRICT_ALL_TABLES'; -START SLAVE; -CREATE TABLE t1_int (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; -CREATE TABLE t1_bit (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; -CREATE TABLE t1_char (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; -CREATE TABLE t1_nodef (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; -CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; -CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=TokuDB; -CREATE TABLE t4 (a INT) ENGINE=TokuDB; -CREATE TABLE t5 (a INT, b INT, c INT) ENGINE=TokuDB; -CREATE TABLE t6 (a INT, b INT, c INT) ENGINE=TokuDB; -CREATE TABLE t7 (a INT NOT NULL) ENGINE=TokuDB; -CREATE TABLE t8 (a INT NOT NULL) ENGINE=TokuDB; -CREATE TABLE t9 (a INT) ENGINE=TokuDB; -ALTER TABLE t1_int ADD x INT DEFAULT 42; -ALTER TABLE t1_bit -ADD x BIT(3) DEFAULT b'011', -ADD y BIT(5) DEFAULT b'10101', -ADD z BIT(2) DEFAULT b'10'; -ALTER TABLE t1_char ADD x CHAR(20) DEFAULT 'Just a test'; -ALTER TABLE t1_nodef ADD x INT NOT NULL, ADD y INT NOT NULL, ADD z INT NOT NULL; -ALTER TABLE t2 DROP b; -ALTER TABLE t4 MODIFY a FLOAT; -ALTER TABLE t5 MODIFY b FLOAT; -ALTER TABLE t6 MODIFY c FLOAT; -ALTER TABLE t7 ADD e1 INT, ADD e2 INT, ADD e3 INT, ADD e4 INT, -ADD e5 INT, ADD e6 INT, ADD e7 INT, ADD e8 INT; -ALTER TABLE t8 ADD e1 INT NOT NULL DEFAULT 0, ADD e2 INT NOT NULL DEFAULT 0, -ADD e3 INT NOT NULL DEFAULT 0, ADD e4 INT NOT NULL DEFAULT 0, -ADD e5 INT NOT NULL DEFAULT 0, ADD e6 INT NOT NULL DEFAULT 0, -ADD e7 INT NOT NULL DEFAULT 0, ADD e8 INT NOT NULL DEFAULT 0; -set @@global.slave_exec_mode= 'IDEMPOTENT'; -INSERT INTO t1_int VALUES (2, 4, 4711); -INSERT INTO t1_char VALUES (2, 4, 'Foo is a bar'); -INSERT INTO t1_bit VALUES (2, 4, b'101', b'11100', b'01'); -**** On Master **** -INSERT INTO t1_int VALUES (1,2); -INSERT INTO t1_int VALUES (2,5); -INSERT INTO t1_bit VALUES (1,2); -INSERT INTO t1_bit VALUES (2,5); -INSERT INTO t1_char VALUES (1,2); -INSERT INTO t1_char VALUES (2,5); -SELECT * FROM t1_int ORDER BY a; -a b -1 2 -2 5 -SELECT * FROM t1_bit ORDER BY a; -a b -1 2 -2 5 -SELECT * FROM t1_char ORDER BY a; -a b -1 2 -2 5 -**** On Slave **** -set @@global.slave_exec_mode= default; -SELECT a,b,x FROM t1_int ORDER BY a; -a b x -1 2 42 -2 5 4711 -SELECT a,b,HEX(x),HEX(y),HEX(z) FROM t1_bit ORDER BY a; -a b HEX(x) HEX(y) HEX(z) -1 2 3 15 2 -2 5 5 1C 1 -SELECT a,b,x FROM t1_char ORDER BY a; -a b x -1 2 Just a test -2 5 Foo is a bar -**** On Master **** -UPDATE t1_int SET b=2*b WHERE a=2; -UPDATE t1_char SET b=2*b WHERE a=2; -UPDATE t1_bit SET b=2*b WHERE a=2; -SELECT * FROM t1_int ORDER BY a; -a b -1 2 -2 10 -SELECT * FROM t1_bit ORDER BY a; -a b -1 2 -2 10 -SELECT * FROM t1_char ORDER BY a; -a b -1 2 -2 10 -**** On Slave **** -SELECT a,b,x FROM t1_int ORDER BY a; -a b x -1 2 42 -2 10 4711 -SELECT a,b,HEX(x),HEX(y),HEX(z) FROM t1_bit ORDER BY a; -a b HEX(x) HEX(y) HEX(z) -1 2 3 15 2 -2 10 5 1C 1 -SELECT a,b,x FROM t1_char ORDER BY a; -a b x -1 2 Just a test -2 10 Foo is a bar -INSERT INTO t9 VALUES (2); -INSERT INTO t1_nodef VALUES (1,2); -select count(*) from t1_nodef; -count(*) -1 -INSERT INTO t9 VALUES (2); -**** On Master **** -INSERT INTO t2 VALUES (2,4); -SELECT * FROM t2; -a b -2 4 -**** On Slave **** -SELECT * FROM t2; -a -2 -include/check_slave_is_running.inc -INSERT INTO t9 VALUES (4); -INSERT INTO t4 VALUES (4); -call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column [012] type mismatch.* Error_code: 1535"); -call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]. cannot be converted from type.* Error_code: 1677"); -call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -INSERT INTO t9 VALUES (5); -INSERT INTO t5 VALUES (5,10,25); -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -INSERT INTO t9 VALUES (6); -INSERT INTO t6 VALUES (6,12,36); -include/wait_for_slave_sql_error_and_skip.inc [errno=1677] -INSERT INTO t9 VALUES (6); -include/check_slave_is_running.inc -INSERT INTO t7 VALUES (1),(2),(3); -INSERT INTO t8 VALUES (1),(2),(3); -SELECT * FROM t7 ORDER BY a; -a -1 -2 -3 -SELECT * FROM t8 ORDER BY a; -a -1 -2 -3 -SELECT * FROM t7 ORDER BY a; -a e1 e2 e3 e4 e5 e6 e7 e8 -1 NULL NULL NULL NULL NULL NULL NULL NULL -2 NULL NULL NULL NULL NULL NULL NULL NULL -3 NULL NULL NULL NULL NULL NULL NULL NULL -SELECT * FROM t8 ORDER BY a; -a e1 e2 e3 e4 e5 e6 e7 e8 -1 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0 0 -3 0 0 0 0 0 0 0 0 -**** On Master **** -TRUNCATE t1_nodef; -SET SQL_LOG_BIN=0; -INSERT INTO t1_nodef VALUES (1,2); -INSERT INTO t1_nodef VALUES (2,4); -SET SQL_LOG_BIN=1; -**** On Slave **** -INSERT INTO t1_nodef VALUES (1,2,3,4,5); -INSERT INTO t1_nodef VALUES (2,4,6,8,10); -**** On Master **** -UPDATE t1_nodef SET b=2*b WHERE a=1; -SELECT * FROM t1_nodef ORDER BY a; -a b -1 4 -2 4 -**** On Slave **** -SELECT * FROM t1_nodef ORDER BY a; -a b x y z -1 4 3 4 5 -2 4 6 8 10 -**** On Master **** -DELETE FROM t1_nodef WHERE a=2; -SELECT * FROM t1_nodef ORDER BY a; -a b -1 4 -**** On Slave **** -SELECT * FROM t1_nodef ORDER BY a; -a b x y z -1 4 3 4 5 -**** Cleanup **** -DROP TABLE IF EXISTS t1_int,t1_bit,t1_char,t1_nodef; -DROP TABLE IF EXISTS t2,t3,t4,t5,t6,t7,t8,t9; -SET @@global.sql_mode= @my_sql_mode; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_set_null_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_set_null_tokudb.result deleted file mode 100644 index d2bc4c148d5..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_set_null_tokudb.result +++ /dev/null @@ -1,31 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -include/rpl_reset.inc -CREATE TABLE t1 (c1 BIT, c2 INT) Engine=TokuDB; -INSERT INTO `t1` VALUES ( 1, 1 ); -UPDATE t1 SET c1=NULL where c2=1; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DELETE FROM t1 WHERE c2=1 LIMIT 1; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -include/sync_slave_sql_with_master.inc -include/rpl_reset.inc -CREATE TABLE t1 (c1 CHAR) Engine=TokuDB; -INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ; -SELECT * FROM t1; -c1 -w -UPDATE t1 SET c1=NULL WHERE c1='w'; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DELETE FROM t1 LIMIT 2; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_stm_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_stm_tokudb.result deleted file mode 100644 index 80d24bd31b2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_stm_tokudb.result +++ /dev/null @@ -1,138 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -CREATE TABLE t4 ( -id INT(5) unsigned NOT NULL auto_increment, -name varchar(15) NOT NULL default '', -number varchar(35) NOT NULL default 'default', -PRIMARY KEY (id), -UNIQUE KEY unique_rec (name,number) -) ENGINE=TokuDB; -LOAD DATA -INFILE '../../std_data/loaddata_pair.dat' -REPLACE INTO TABLE t4 -(name,number); -SELECT * FROM t4; -id name number -1 XXX 12345 -2 XXY 12345 -SELECT * FROM t4; -id name number -1 XXX 12345 -2 XXY 12345 -LOAD DATA -INFILE '../../std_data/loaddata_pair.dat' -REPLACE INTO TABLE t4 -(name,number); -SELECT * FROM t4; -id name number -4 XXX 12345 -5 XXY 12345 -SELECT * FROM t4; -id name number -4 XXX 12345 -5 XXY 12345 -FLUSH LOGS; -FLUSH LOGS; -DROP DATABASE IF EXISTS mysqltest1; -CREATE DATABASE mysqltest1; -CREATE TEMPORARY TABLE mysqltest1.tmp (f1 BIGINT) ENGINE=InnoDB; -CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="TokuDB"; -SET AUTOCOMMIT = 0; --------- switch to slave -------- -ALTER TABLE mysqltest1.t1 ENGINE = MyISAM; -SHOW CREATE TABLE mysqltest1.t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `f1` bigint(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1 --------- switch to master -------- -INSERT INTO mysqltest1.t1 SET f1= 1; -DROP TEMPORARY TABLE mysqltest1.tmp; -ROLLBACK; -Warnings: -Warning # Some temporary tables were dropped, but these operations could not be rolled back. -SHOW CREATE TABLE mysqltest1.tmp; -ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist -######### Must return no rows here ######### -SELECT COUNT(*) FROM mysqltest1.t1; -COUNT(*) -0 -INSERT INTO mysqltest1.t1 SET f1= 2; -CREATE TEMPORARY TABLE mysqltest1.tmp2(a INT) ENGINE=InnoDB; -ROLLBACK; -Warnings: -Warning # The creation of some temporary tables could not be rolled back. -SHOW CREATE TABLE mysqltest1.tmp2; -Table Create Table -tmp2 CREATE TEMPORARY TABLE `tmp2` ( - `a` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 -######### Must return no rows here ######### -SELECT COUNT(*) FROM mysqltest1.t1; -COUNT(*) -0 --------- switch to slave -------- -SHOW CREATE TABLE mysqltest1.tmp; -ERROR 42S02: Table 'mysqltest1.tmp' doesn't exist -SHOW CREATE TABLE mysqltest1.tmp2; -ERROR 42S02: Table 'mysqltest1.tmp2' doesn't exist -######### for SBR, t1 has two rows here: the transaction not rolled back since t1 uses MyISAM ######### -######### for MBR, t1 has one row here: the transaction not rolled back since t1 uses MyISAM ######### -SELECT COUNT(*) FROM mysqltest1.t1; -COUNT(*) -2 -FLUSH LOGS; --------- switch to master -------- -FLUSH LOGS; -DROP TEMPORARY TABLE IF EXISTS mysqltest1.tmp2; -DROP DATABASE mysqltest1; -End of 5.1 tests -# -# Bug#39675 rename tables on innodb tables with pending -# transactions causes slave data issue. -# -DROP TABLE IF EXISTS t1; -DROP TABLE IF EXISTS t2; -DROP TABLE IF EXISTS t3; -CREATE TABLE t1 ( -id INT PRIMARY KEY auto_increment, -b INT DEFAULT NULL -) ENGINE=TokuDB; -CREATE TABLE t2 ( -id INT PRIMARY KEY auto_increment, -b INT DEFAULT NULL -) ENGINE=TokuDB; -INSERT INTO t1 (b) VALUES (1),(2),(3); -BEGIN; -INSERT INTO t1(b) VALUES (4); --------- switch to master1 -------- -RENAME TABLE t1 TO t3, t2 TO t1;; --------- switch to master -------- -COMMIT; --------- switch to master1 -------- --------- switch to master -------- -SELECT * FROM t1; -id b -SELECT * FROM t3; -id b -1 1 -2 2 -3 3 -4 4 --------- switch to slave -------- -SELECT * FROM t1; -id b -SELECT * FROM t3; -id b -1 1 -2 2 -3 3 -4 4 --------- switch to master -------- -DROP TABLE t1; -DROP TABLE t3; -End of 6.0 tests -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug28430.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug28430.result deleted file mode 100644 index 009c020b496..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug28430.result +++ /dev/null @@ -1,145 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -use test; -CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, -dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON -UPDATE CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, -fkid MEDIUMINT, filler VARCHAR(255), -PRIMARY KEY(id)) ENGINE=TokuDB; -CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, -dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE -CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, -fkid MEDIUMINT, filler VARCHAR(255), -PRIMARY KEY(id)) ENGINE=TokuDB -PARTITION BY KEY(id) partitions 5; -CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, -dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE -CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, -fkid MEDIUMINT, filler VARCHAR(255), -PRIMARY KEY(id)) ENGINE=TokuDB -PARTITION BY RANGE(id) -SUBPARTITION BY hash(id) subpartitions 2 -(PARTITION pa1 values less than (10), -PARTITION pa2 values less than (20), -PARTITION pa3 values less than (30), -PARTITION pa4 values less than (40), -PARTITION pa5 values less than (50), -PARTITION pa6 values less than (60), -PARTITION pa7 values less than (70), -PARTITION pa8 values less than (80), -PARTITION pa9 values less than (90), -PARTITION pa10 values less than (100), -PARTITION pa11 values less than MAXVALUE); -CREATE PROCEDURE test.proc_norm() -BEGIN -DECLARE ins_count INT DEFAULT 1000; -DECLARE del_count INT; -DECLARE cur_user VARCHAR(255); -DECLARE local_uuid VARCHAR(255); -DECLARE local_time TIMESTAMP; -SET local_time= NOW(); -SET cur_user= CURRENT_USER(); -SET local_uuid= UUID(); -WHILE ins_count > 0 DO -INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), -ins_count,'Going to test MBR for MySQL'); -SET ins_count = ins_count - 1; -END WHILE; -SELECT MAX(id) FROM test.regular_tbl INTO del_count; -WHILE del_count > 0 DO -DELETE FROM test.regular_tbl WHERE id = del_count; -SET del_count = del_count - 2; -END WHILE; -END| -CREATE PROCEDURE test.proc_bykey() -BEGIN -DECLARE ins_count INT DEFAULT 1000; -DECLARE del_count INT; -DECLARE cur_user VARCHAR(255); -DECLARE local_uuid VARCHAR(255); -DECLARE local_time TIMESTAMP; -SET local_time= NOW(); -SET cur_user= CURRENT_USER(); -SET local_uuid= UUID(); -WHILE ins_count > 0 DO -INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(), -ins_count,'Going to test MBR for MySQL'); -SET ins_count = ins_count - 1; -END WHILE; -SELECT MAX(id) FROM test.bykey_tbl INTO del_count; -WHILE del_count > 0 DO -DELETE FROM test.bykey_tbl WHERE id = del_count; -SET del_count = del_count - 2; -END WHILE; -END| -CREATE PROCEDURE test.proc_byrange() -BEGIN -DECLARE ins_count INT DEFAULT 1000; -DECLARE del_count INT; -DECLARE cur_user VARCHAR(255); -DECLARE local_uuid VARCHAR(255); -DECLARE local_time TIMESTAMP; -SET local_time= NOW(); -SET cur_user = CURRENT_USER(); -SET local_uuid=UUID(); -WHILE ins_count > 0 DO -INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(), -ins_count,'Going to test MBR for MySQL'); -SET ins_count = ins_count - 1; -END WHILE; -SELECT MAX(id) FROM test.byrange_tbl INTO del_count; -WHILE del_count > 0 DO -DELETE FROM test.byrange_tbl WHERE id = del_count; -SET del_count = del_count - 2; -END WHILE; -END| -CALL test.proc_norm(); -SELECT count(*) as "Master regular" FROM test.regular_tbl; -Master regular 500 -CALL test.proc_bykey(); -SELECT count(*) as "Master bykey" FROM test.bykey_tbl; -Master bykey 500 -CALL test.proc_byrange(); -SELECT count(*) as "Master byrange" FROM test.byrange_tbl; -Master byrange 500 -show create table test.byrange_tbl; -Table byrange_tbl -Create Table CREATE TABLE `byrange_tbl` ( - `id` mediumint(9) NOT NULL AUTO_INCREMENT, - `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `user` char(255) DEFAULT NULL, - `uuidf` longblob, - `fkid` mediumint(9) DEFAULT NULL, - `filler` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=TokuDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY RANGE (id) -SUBPARTITION BY HASH (id) -SUBPARTITIONS 2 -(PARTITION pa1 VALUES LESS THAN (10) ENGINE = TokuDB, - PARTITION pa2 VALUES LESS THAN (20) ENGINE = TokuDB, - PARTITION pa3 VALUES LESS THAN (30) ENGINE = TokuDB, - PARTITION pa4 VALUES LESS THAN (40) ENGINE = TokuDB, - PARTITION pa5 VALUES LESS THAN (50) ENGINE = TokuDB, - PARTITION pa6 VALUES LESS THAN (60) ENGINE = TokuDB, - PARTITION pa7 VALUES LESS THAN (70) ENGINE = TokuDB, - PARTITION pa8 VALUES LESS THAN (80) ENGINE = TokuDB, - PARTITION pa9 VALUES LESS THAN (90) ENGINE = TokuDB, - PARTITION pa10 VALUES LESS THAN (100) ENGINE = TokuDB, - PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = TokuDB) */ -SELECT count(*) "Slave norm" FROM test.regular_tbl; -Slave norm 500 -SELECT count(*) "Slave bykey" FROM test.bykey_tbl; -Slave bykey 500 -SELECT count(*) "Slave byrange" FROM test.byrange_tbl; -Slave byrange 500 -DROP PROCEDURE test.proc_norm; -DROP PROCEDURE test.proc_bykey; -DROP PROCEDURE test.proc_byrange; -DROP TABLE test.regular_tbl; -DROP TABLE test.bykey_tbl; -DROP TABLE test.byrange_tbl; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug30888.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug30888.result deleted file mode 100644 index bfcb5a92b68..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_bug30888.result +++ /dev/null @@ -1,35 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -use test; -CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, -dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB, -fkid MEDIUMINT, filler VARCHAR(255), -PRIMARY KEY(id)) ENGINE=TokuDB; -CREATE PROCEDURE test.proc_norm() -BEGIN -DECLARE ins_count INT DEFAULT 1000; -DECLARE del_count INT; -DECLARE cur_user VARCHAR(255); -DECLARE local_uuid VARCHAR(255); -DECLARE local_time TIMESTAMP; -SET local_time= NOW(); -SET cur_user= CURRENT_USER(); -SET local_uuid= UUID(); -WHILE ins_count > 0 DO -INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), -ins_count,'Going to test MBR for MySQL'); -SET ins_count = ins_count - 1; -END WHILE; -SELECT MAX(id) FROM test.regular_tbl INTO del_count; -WHILE del_count > 0 DO -DELETE FROM test.regular_tbl WHERE id = del_count; -SET del_count = del_count - 2; -END WHILE; -END| -CALL test.proc_norm(); -DROP PROCEDURE test.proc_norm; -DROP TABLE test.regular_tbl; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result deleted file mode 100644 index 2aeef4204f5..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_commit_after_flush.result +++ /dev/null @@ -1,15 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -CREATE TABLE t1 (a INT) ENGINE=tokudb; -begin; -insert into t1 values(1); -flush tables with read lock; -commit; -include/sync_slave_sql_with_master.inc -unlock tables; -drop table t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk.result deleted file mode 100644 index 6fab29177d7..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk.result +++ /dev/null @@ -1,27 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows OFF -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -include/diff_tables.inc [master:test.t, slave:test.t] -delete from t where a=2; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk_lookup1.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk_lookup1.result deleted file mode 100644 index f8efd5e04ee..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_delete_pk_lookup1.result +++ /dev/null @@ -1,27 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks ON -tokudb_rpl_unique_checks_delay 0 -create table t (a bigint not null, primary key(a)) engine=tokudb; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -include/diff_tables.inc [master:test.t, slave:test.t] -delete from t where a=2; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart > 5; -@tend-@tstart > 5 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result deleted file mode 100644 index 217520a59d4..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id.result +++ /dev/null @@ -1,554 +0,0 @@ -# -# Setup -# -# -# See if queries that use both auto_increment and LAST_INSERT_ID() -# are replicated well -# -# We also check how the foreign_key_check variable is replicated -# -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -SET @old_concurrent_insert= @@global.concurrent_insert; -SET @@global.concurrent_insert= 0; -create table t1(a int auto_increment, key(a)) engine=tokudb; -create table t2(b int auto_increment, c int, key(b)) engine=tokudb; -insert into t1 values (1),(2),(3); -insert into t1 values (null); -insert into t2 values (null,last_insert_id()); -include/sync_slave_sql_with_master.inc -select * from t1 ORDER BY a; -a -1 -2 -3 -4 -select * from t2 ORDER BY b; -b c -1 4 -drop table t1; -drop table t2; -create table t1(a int auto_increment, key(a)) engine=tokudb; -create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=tokudb; -SET FOREIGN_KEY_CHECKS=0; -insert into t1 values (10); -insert into t1 values (null),(null),(null); -insert into t2 values (5,0); -insert into t2 values (null,last_insert_id()); -SET FOREIGN_KEY_CHECKS=1; -include/sync_slave_sql_with_master.inc -select * from t1; -a -10 -11 -12 -13 -select * from t2; -b c -5 0 -6 11 -# -# check if INSERT SELECT in auto_increment is well replicated (bug #490) -# -drop table t2; -drop table t1; -create table t1(a int auto_increment, key(a)) engine=tokudb; -create table t2(b int auto_increment, c int, key(b)) engine=tokudb; -insert into t1 values (10); -insert into t1 values (null),(null),(null); -insert into t2 values (5,0); -insert into t2 (c) select * from t1 ORDER BY a; -select * from t2 ORDER BY b; -b c -5 0 -6 10 -7 11 -8 12 -9 13 -include/sync_slave_sql_with_master.inc -select * from t1 ORDER BY a; -a -10 -11 -12 -13 -select * from t2 ORDER BY b; -b c -5 0 -6 10 -7 11 -8 12 -9 13 -drop table t1; -drop table t2; -include/sync_slave_sql_with_master.inc -# -# Bug#8412: Error codes reported in binary log for CHARACTER SET, -# FOREIGN_KEY_CHECKS -# -SET TIMESTAMP=1000000000; -CREATE TABLE t1 ( a INT UNIQUE ) engine=tokudb; -SET FOREIGN_KEY_CHECKS=0; -INSERT INTO t1 VALUES (1),(1); -Got one of the listed errors -include/sync_slave_sql_with_master.inc -drop table t1; -include/sync_slave_sql_with_master.inc -# -# Bug#14553: NULL in WHERE resets LAST_INSERT_ID -# -set @@session.sql_auto_is_null=1; -create table t1(a int auto_increment, key(a)) engine=tokudb; -create table t2(a int) engine=tokudb; -insert into t1 (a) values (null); -insert into t2 (a) select a from t1 where a is null; -insert into t2 (a) select a from t1 where a is null; -select * from t2; -a -1 -include/sync_slave_sql_with_master.inc -select * from t2; -a -1 -drop table t1; -drop table t2; -# -# End of 4.1 tests -# -# -# BUG#15728: LAST_INSERT_ID function inside a stored function returns 0 -# -# The solution is not to reset last_insert_id on enter to sub-statement. -# -drop function if exists bug15728; -drop function if exists bug15728_insert; -drop table if exists t1, t2; -create table t1 ( -id int not null auto_increment, -last_id int, -primary key (id) -) engine=tokudb; -create function bug15728() returns int(11) -return last_insert_id(); -insert into t1 (last_id) values (0); -insert into t1 (last_id) values (last_insert_id()); -insert into t1 (last_id) values (bug15728()); -create table t2 ( -id int not null auto_increment, -last_id int, -primary key (id) -) engine=tokudb; -create function bug15728_insert() returns int(11) modifies sql data -begin -insert into t2 (last_id) values (bug15728()); -return bug15728(); -end| -create trigger t1_bi before insert on t1 for each row -begin -declare res int; -select bug15728_insert() into res; -set NEW.last_id = res; -end| -insert into t1 (last_id) values (0); -drop trigger t1_bi; -select last_insert_id(); -last_insert_id() -4 -select bug15728_insert(); -bug15728_insert() -2 -select last_insert_id(); -last_insert_id() -4 -insert into t1 (last_id) values (bug15728()); -select last_insert_id(); -last_insert_id() -5 -drop procedure if exists foo; -create procedure foo() -begin -declare res int; -insert into t2 (last_id) values (bug15728()); -insert into t1 (last_id) values (bug15728()); -end| -call foo(); -select * from t1; -id last_id -1 0 -2 1 -3 2 -4 1 -5 4 -6 3 -select * from t2; -id last_id -1 3 -2 4 -3 5 -include/sync_slave_sql_with_master.inc -select * from t1; -id last_id -1 0 -2 1 -3 2 -4 1 -5 4 -6 3 -select * from t2; -id last_id -1 3 -2 4 -3 5 -drop function bug15728; -drop function bug15728_insert; -drop table t1,t2; -drop procedure foo; -create table t1 (n int primary key auto_increment not null, -b int, unique(b)) engine=tokudb; -set sql_log_bin=0; -insert into t1 values(null,100); -replace into t1 values(null,50),(null,100),(null,150); -select * from t1 order by n; -n b -2 50 -3 100 -4 150 -truncate table t1; -set sql_log_bin=1; -insert into t1 values(null,100); -select * from t1 order by n; -n b -1 100 -include/sync_slave_sql_with_master.inc -insert into t1 values(null,200),(null,300); -delete from t1 where b <> 100; -select * from t1 order by n; -n b -1 100 -replace into t1 values(null,100),(null,350); -select * from t1 order by n; -n b -2 100 -3 350 -include/sync_slave_sql_with_master.inc -select * from t1 order by n; -n b -2 100 -3 350 -insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000; -select * from t1 order by n; -n b -2 100 -4 400 -5 600 -1000 350 -include/sync_slave_sql_with_master.inc -select * from t1 order by n; -n b -2 100 -4 400 -5 600 -1000 350 -drop table t1; -create table t1 (n int primary key auto_increment not null, -b int, unique(b)) engine=tokudb; -insert into t1 values(null,100); -select * from t1 order by n; -n b -1 100 -include/sync_slave_sql_with_master.inc -insert into t1 values(null,200),(null,300); -delete from t1 where b <> 100; -select * from t1 order by n; -n b -1 100 -insert into t1 values(null,100),(null,350) on duplicate key update n=2; -select * from t1 order by n; -n b -2 100 -3 350 -include/sync_slave_sql_with_master.inc -select * from t1 order by n; -n b -2 100 -3 350 -drop table t1; -include/sync_slave_sql_with_master.inc -CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT, -UNIQUE(b)) ENGINE=tokudb; -INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10; -SELECT * FROM t1 ORDER BY a; -a b -1 10 -2 2 -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY a; -a b -1 10 -2 2 -drop table t1; -CREATE TABLE t1 ( -id bigint(20) unsigned NOT NULL auto_increment, -field_1 int(10) unsigned NOT NULL, -field_2 varchar(255) NOT NULL, -field_3 varchar(255) NOT NULL, -PRIMARY KEY (id), -UNIQUE KEY field_1 (field_1, field_2) -) ENGINE=tokudb; -CREATE TABLE t2 ( -field_a int(10) unsigned NOT NULL, -field_b varchar(255) NOT NULL, -field_c varchar(255) NOT NULL -) ENGINE=tokudb; -INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a'); -INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b'); -INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c'); -INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d'); -INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e'); -INSERT INTO t1 (field_1, field_2, field_3) -SELECT t2.field_a, t2.field_b, t2.field_c -FROM t2 -ON DUPLICATE KEY UPDATE -t1.field_3 = t2.field_c; -INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f'); -INSERT INTO t1 (field_1, field_2, field_3) -SELECT t2.field_a, t2.field_b, t2.field_c -FROM t2 -ON DUPLICATE KEY UPDATE -t1.field_3 = t2.field_c; -SELECT * FROM t1 ORDER BY id; -id field_1 field_2 field_3 -1 1 a 1a -2 2 b 2b -3 3 c 3c -4 4 d 4d -5 5 e 5e -8 6 f 6f -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY id; -id field_1 field_2 field_3 -1 1 a 1a -2 2 b 2b -3 3 c 3c -4 4 d 4d -5 5 e 5e -8 6 f 6f -drop table t1, t2; -DROP PROCEDURE IF EXISTS p1; -DROP TABLE IF EXISTS t1, t2; -SELECT LAST_INSERT_ID(0); -LAST_INSERT_ID(0) -0 -CREATE TABLE t1 ( -id INT NOT NULL DEFAULT 0, -last_id INT, -PRIMARY KEY (id) -) ENGINE=tokudb; -CREATE TABLE t2 ( -id INT NOT NULL AUTO_INCREMENT, -last_id INT, -PRIMARY KEY (id) -) ENGINE=tokudb; -CREATE PROCEDURE p1() -BEGIN -INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID()); -INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID()); -END| -CALL p1(); -SELECT * FROM t1 ORDER BY id; -id last_id -0 1 -SELECT * FROM t2 ORDER BY id; -id last_id -1 0 -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY id; -id last_id -0 1 -SELECT * FROM t2 ORDER BY id; -id last_id -1 0 -DROP PROCEDURE p1; -DROP TABLE t1, t2; -DROP PROCEDURE IF EXISTS p1; -DROP FUNCTION IF EXISTS f1; -DROP FUNCTION IF EXISTS f2; -DROP FUNCTION IF EXISTS f3; -DROP TABLE IF EXISTS t1, t2; -CREATE TABLE t1 ( -i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -j INT DEFAULT 0 -) ENGINE=tokudb; -CREATE TABLE t2 (i INT) ENGINE=tokudb; -CREATE PROCEDURE p1() -BEGIN -INSERT INTO t1 (i) VALUES (NULL); -INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); -INSERT INTO t1 (i) VALUES (NULL), (NULL); -INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); -END | -CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATA -BEGIN -INSERT INTO t1 (i) VALUES (NULL); -INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); -INSERT INTO t1 (i) VALUES (NULL), (NULL); -INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); -RETURN 0; -END | -CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC -RETURN LAST_INSERT_ID() | -CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA -BEGIN -INSERT INTO t2 (i) VALUES (LAST_INSERT_ID()); -RETURN 0; -END | -INSERT INTO t1 VALUES (NULL, -1); -CALL p1(); -SELECT f1(); -f1() -0 -INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()), -(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2()); -INSERT INTO t1 VALUES (NULL, f2()); -INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID()); -UPDATE t1 SET j= -1 WHERE i IS NULL; -INSERT INTO t1 (i) VALUES (NULL); -INSERT INTO t1 (i) VALUES (NULL); -SELECT f3(); -f3() -0 -SELECT * FROM t1 ORDER BY i; -i j -1 -1 -2 0 -3 0 -4 0 -5 0 -6 0 -7 0 -8 3 -9 3 -10 3 -11 3 -12 3 -13 8 -14 -1 -15 13 -16 0 -17 0 -SELECT * FROM t2 ORDER BY i; -i -2 -3 -5 -6 -16 -include/sync_slave_sql_with_master.inc -SELECT * FROM t1; -i j -1 -1 -2 0 -3 0 -4 0 -5 0 -6 0 -7 0 -8 3 -9 3 -10 3 -11 3 -12 3 -13 8 -14 -1 -15 13 -16 0 -17 0 -SELECT * FROM t2; -i -2 -3 -5 -6 -16 -DROP PROCEDURE p1; -DROP FUNCTION f1; -DROP FUNCTION f2; -DROP FUNCTION f3; -DROP TABLE t1, t2; -include/sync_slave_sql_with_master.inc -# -# End of 5.0 tests -# -create table t2 ( -id int not null auto_increment, -last_id int, -primary key (id) -) engine=tokudb; -truncate table t2; -create table t1 (id tinyint primary key) engine=tokudb; -create function insid() returns int -begin -insert into t2 (last_id) values (0); -return 0; -end| -set sql_log_bin=0; -insert into t2 (id) values(1),(2),(3); -delete from t2; -set sql_log_bin=1; -select insid(); -insid() -0 -set sql_log_bin=0; -insert into t2 (id) values(5),(6),(7); -delete from t2 where id>=5; -set sql_log_bin=1; -insert into t1 select insid(); -select * from t1 order by id; -id -0 -select * from t2 order by id; -id last_id -4 0 -8 0 -include/sync_slave_sql_with_master.inc -select * from t1 order by id; -id -0 -select * from t2 order by id; -id last_id -4 0 -8 0 -drop table t1; -drop function insid; -truncate table t2; -create table t1 (n int primary key auto_increment not null, -b int, unique(b)) engine=tokudb; -create procedure foo() -begin -insert into t1 values(null,10); -insert ignore into t1 values(null,10); -insert ignore into t1 values(null,10); -insert into t2 values(null,3); -end| -call foo(); -select * from t1 order by n; -n b -1 10 -select * from t2 order by id; -id last_id -1 3 -include/sync_slave_sql_with_master.inc -select * from t1 order by n; -n b -1 10 -select * from t2 order by id; -id last_id -1 3 -drop table t1, t2; -drop procedure foo; -SET @@global.concurrent_insert= @old_concurrent_insert; -set @@session.sql_auto_is_null=default; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result deleted file mode 100644 index cce5d6d42e6..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_insert_id_pk.result +++ /dev/null @@ -1,82 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT."); -create table t1(a int auto_increment, primary key(a)); -create table t2(b int auto_increment, c int, primary key(b)); -insert into t1 values (1),(2),(3); -insert into t1 values (null); -insert into t2 values (null,last_insert_id()); -include/sync_slave_sql_with_master.inc -select * from t1 ORDER BY a; -a -1 -2 -3 -4 -select * from t2 ORDER BY b; -b c -1 4 -drop table t1; -drop table t2; -create table t1(a int auto_increment, key(a)) engine=tokudb; -create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=tokudb; -SET FOREIGN_KEY_CHECKS=0; -insert into t1 values (10); -insert into t1 values (null),(null),(null); -insert into t2 values (5,0); -insert into t2 values (null,last_insert_id()); -SET FOREIGN_KEY_CHECKS=1; -include/sync_slave_sql_with_master.inc -select * from t1; -a -10 -11 -12 -13 -select * from t2; -b c -5 0 -6 11 -drop table t2; -drop table t1; -create table t1(a int auto_increment, primary key(a)); -create table t2(b int auto_increment, c int, primary key(b)); -insert into t1 values (10); -insert into t1 values (null),(null),(null); -insert into t2 values (5,0); -insert into t2 (c) select * from t1 ORDER BY a; -select * from t2 ORDER BY b; -b c -5 0 -6 10 -7 11 -8 12 -9 13 -include/sync_slave_sql_with_master.inc -select * from t1 ORDER BY a; -a -10 -11 -12 -13 -select * from t2 ORDER BY b; -b c -5 0 -6 10 -7 11 -8 12 -9 13 -drop table t1; -drop table t2; -include/sync_slave_sql_with_master.inc -SET TIMESTAMP=1000000000; -CREATE TABLE t1 ( a INT UNIQUE ); -SET FOREIGN_KEY_CHECKS=0; -INSERT INTO t1 VALUES (1),(1); -Got one of the listed errors -include/sync_slave_sql_with_master.inc -drop table t1; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_ddl.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_ddl.result deleted file mode 100644 index 7f2e9465829..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_ddl.result +++ /dev/null @@ -1,159 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -==========MASTER========== -show global variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -show session variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -select @@global.binlog_format, @@session.binlog_format; -@@global.binlog_format @@session.binlog_format -MIXED MIXED -==========SLAVE=========== -show global variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -show session variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -select @@global.binlog_format, @@session.binlog_format; -@@global.binlog_format @@session.binlog_format -MIXED MIXED - -******************** DDL for database ******************** -DROP DATABASE IF EXISTS test_rpl; -DROP DATABASE IF EXISTS test_rpl_1; -CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci; -ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci; -DROP DATABASE test_rpl_1; -CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci; -ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci; -==========MASTER========== -SHOW DATABASES LIKE 'test_rpl%'; -Database (test_rpl%) -test_rpl -==========SLAVE=========== -SHOW DATABASES LIKE 'test_rpl%'; -Database (test_rpl%) -test_rpl -USE test_rpl; - -******************** DDL for tables ******************** -CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=TokuDB; -ALTER TABLE t0 DROP INDEX index2; -ALTER TABLE t0 ADD COLUMN b char(254); -ALTER TABLE t0 ADD INDEX index1 (b); -ALTER TABLE t0 DROP COLUMN c; -RENAME TABLE t0 TO t1; -CREATE TABLE t2 LIKE t1; -==========MASTER========== -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SHOW CREATE TABLE t2; -Table Create Table -t2 CREATE TABLE `t2` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -==========SLAVE=========== -USE test_rpl; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SHOW CREATE TABLE t2; -Table Create Table -t2 CREATE TABLE `t2` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 - -******************** DDL for indexes ******************** -ALTER TABLE t2 ADD COLUMN d datetime; -CREATE INDEX index2 on t2 (d); -CREATE INDEX index3 on t2 (a, d); -==========MASTER========== -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SHOW CREATE TABLE t2; -Table Create Table -t2 CREATE TABLE `t2` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - `d` datetime DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`), - KEY `index2` (`d`), - KEY `index3` (`a`,`d`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -==========SLAVE=========== -USE test_rpl; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -SHOW CREATE TABLE t2; -Table Create Table -t2 CREATE TABLE `t2` ( - `a` int(11) NOT NULL AUTO_INCREMENT, - `b` char(254) DEFAULT NULL, - `d` datetime DEFAULT NULL, - PRIMARY KEY (`a`), - KEY `index1` (`b`), - KEY `index2` (`d`), - KEY `index3` (`a`,`d`) -) ENGINE=TokuDB DEFAULT CHARSET=latin1 -ALTER TABLE t2 DROP COLUMN d; - - -******************** SHOW BINLOG EVENTS ******************** -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl -master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl_1 -master-bin.000001 # Query # # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci -master-bin.000001 # Query # # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci -master-bin.000001 # Query # # DROP DATABASE test_rpl_1 -master-bin.000001 # Query # # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci -master-bin.000001 # Query # # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci -master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=TokuDB -master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2 -master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254) -master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b) -master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c -master-bin.000001 # Query # # use `test_rpl`; RENAME TABLE t0 TO t1 -master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 LIKE t1 -master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime -master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index2 on t2 (d) -master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index3 on t2 (a, d) -master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d -drop database test_rpl; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_dml.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_dml.result deleted file mode 100644 index ba9c06106ca..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_mixed_dml.result +++ /dev/null @@ -1,1109 +0,0 @@ -SET SESSION tokudb_pk_insert_mode = 2; -Warnings: -Warning 131 Using tokudb_pk_insert_mode is deprecated and the parameter may be removed in future releases. -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -==========MASTER========== -show global variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -show session variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -select @@global.binlog_format, @@session.binlog_format; -@@global.binlog_format @@session.binlog_format -MIXED MIXED -==========SLAVE=========== -show global variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -show session variables like 'binlog_format%'; -Variable_name Value -binlog_format MIXED -select @@global.binlog_format, @@session.binlog_format; -@@global.binlog_format @@session.binlog_format -MIXED MIXED -CREATE DATABASE test_rpl; - -******************** PREPARE TESTING ******************** -USE test_rpl; -CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB; -CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB; -INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t1 VALUES(2, 't1, text 2'); -INSERT INTO t2 VALUES(1, 't2, text 1'); - -******************** DELETE ******************** -DELETE FROM t1 WHERE a = 1; -DELETE FROM t2 WHERE b <> UUID(); -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -2 t1, text 2 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -2 t1, text 2 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -DELETE FROM t1; -DELETE FROM t2; - -******************** INSERT ******************** -INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t1 VALUES(2, UUID()); -INSERT INTO t2 SELECT * FROM t1; -INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'; -DELETE FROM t1 WHERE a = 2; -DELETE FROM t2 WHERE a = 2; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 1 -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 t2, text 1 -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 1 -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 t2, text 1 -DELETE FROM t1; -DELETE FROM t2; - -******************** LOAD DATA INFILE ******************** -LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data/rpl_mixed.dat' INTO TABLE t1 FIELDS TERMINATED BY '|' ; -SELECT * FROM t1 ORDER BY a; -a b -10 line A -20 line B -30 line C -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -3 -SELECT * FROM t1 ORDER BY a; -a b -10 line A -20 line B -30 line C -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -3 -SELECT * FROM t1 ORDER BY a; -a b -10 line A -20 line B -30 line C -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -DELETE FROM t1; -DELETE FROM t2; - -******************** REPLACE ******************** -INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t1 VALUES(2, 't1, text 2'); -INSERT INTO t1 VALUES(3, 't1, text 3'); -REPLACE INTO t1 VALUES(1, 't1, text 11'); -REPLACE INTO t1 VALUES(2, UUID()); -REPLACE INTO t1 SET a=3, b='t1, text 33'; -DELETE FROM t1 WHERE a = 2; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -2 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 11 -3 t1, text 33 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -2 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 11 -3 t1, text 33 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -DELETE FROM t1; -DELETE FROM t2; - -******************** SELECT ******************** -INSERT INTO t1 VALUES(1, 't1, text 1'); -SELECT * FROM t1 WHERE b <> UUID() ORDER BY a; -a b -1 t1, text 1 -DELETE FROM t1; -DELETE FROM t2; - -******************** JOIN ******************** -INSERT INTO t1 VALUES(1, 'CCC'); -INSERT INTO t1 VALUES(2, 'DDD'); -INSERT INTO t2 VALUES(1, 'DDD'); -INSERT INTO t2 VALUES(2, 'CCC'); -SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a ORDER BY t1.a,t2.a; -a b a b -1 CCC 1 DDD -2 DDD 2 CCC -SELECT * FROM t1 INNER JOIN t2 ON t1.b = t2.b ORDER BY t1.a,t2.a; -a b a b -1 CCC 2 CCC -2 DDD 1 DDD -DELETE FROM t1; -DELETE FROM t2; - -******************** UNION ******************** -INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t2 VALUES(1, 't2, text 1'); -SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> UUID(); -a b -1 t1, text 1 -1 t2, text 1 -DELETE FROM t1; -DELETE FROM t2; - -******************** TRUNCATE ******************** -INSERT INTO t1 VALUES(1, 't1, text 1'); -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -TRUNCATE t1; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -0 -SELECT * FROM t1 ORDER BY a; -a b -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -0 -SELECT * FROM t1 ORDER BY a; -a b -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -DELETE FROM t1; -DELETE FROM t2; - -******************** UPDATE ******************** -INSERT INTO t1 VALUES(1, 't1, text 1'); -INSERT INTO t2 VALUES(1, 't2, text 1'); -UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 1 updated -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 t2, text 1 -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 t1, text 1 updated -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 t2, text 1 -UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test'; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 test -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 test -DELETE FROM t1; -DELETE FROM t2; - -******************** DESCRIBE ******************** -DESCRIBE t1; -Field Type Null Key Default Extra -a int(11) NO PRI NULL auto_increment -b char(254) YES NULL -DESCRIBE t2 b; -Field Type Null Key Default Extra -b char(254) YES NULL - -******************** USE ******************** -USE test_rpl; - -******************** TRANSACTION ******************** -START TRANSACTION; -INSERT INTO t1 VALUES (1, 'start'); -COMMIT; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 start -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 start -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -START TRANSACTION; -INSERT INTO t1 VALUES (2, 'rollback'); -ROLLBACK; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 start -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 start -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -START TRANSACTION; -INSERT INTO t1 VALUES (3, 'before savepoint s1'); -SAVEPOINT s1; -INSERT INTO t1 VALUES (4, 'after savepoint s1'); -ROLLBACK TO SAVEPOINT s1; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -2 -SELECT * FROM t1 ORDER BY a; -a b -1 start -3 before savepoint s1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 start -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -START TRANSACTION; -INSERT INTO t1 VALUES (5, 'before savepoint s2'); -SAVEPOINT s2; -INSERT INTO t1 VALUES (6, 'after savepoint s2'); -INSERT INTO t1 VALUES (7, CONCAT('with UUID() ',UUID())); -RELEASE SAVEPOINT s2; -COMMIT; -DELETE FROM t1 WHERE a = 7; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -4 -SELECT * FROM t1 ORDER BY a; -a b -1 start -3 before savepoint s1 -5 before savepoint s2 -6 after savepoint s2 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -4 -SELECT * FROM t1 ORDER BY a; -a b -1 start -3 before savepoint s1 -5 before savepoint s2 -6 after savepoint s2 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -DELETE FROM t1; -DELETE FROM t2; - -******************** LOCK TABLES ******************** -LOCK TABLES t1 READ , t2 READ; -UNLOCK TABLES; - -******************** TRANSACTION ISOLATION LEVEL ******************** -SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; -SET TRANSACTION ISOLATION LEVEL READ COMMITTED; -SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; -SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; - -******************** CREATE USER ******************** -CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111'; -==========MASTER========== -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *1111111111111111111111111111111111111111 N -==========SLAVE=========== -USE test_rpl; -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *1111111111111111111111111111111111111111 N - -******************** GRANT ******************** -GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost'; -==========MASTER========== -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *1111111111111111111111111111111111111111 Y -==========SLAVE=========== -USE test_rpl; -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *1111111111111111111111111111111111111111 Y - -******************** REVOKE ******************** -REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost'; -==========MASTER========== -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *1111111111111111111111111111111111111111 N -==========SLAVE=========== -USE test_rpl; -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *1111111111111111111111111111111111111111 N - -******************** SET PASSWORD ******************** -SET PASSWORD FOR 'user_test_rpl'@'localhost' = '*0000000000000000000000000000000000000000'; -==========MASTER========== -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *0000000000000000000000000000000000000000 N -==========SLAVE=========== -USE test_rpl; -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl *0000000000000000000000000000000000000000 N - -******************** RENAME USER ******************** -RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost'; -==========MASTER========== -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl_2 *0000000000000000000000000000000000000000 N -==========SLAVE=========== -USE test_rpl; -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -localhost user_test_rpl_2 *0000000000000000000000000000000000000000 N - -******************** DROP USER ******************** -DROP USER 'user_test_rpl_2'@'localhost'; -==========MASTER========== -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -==========SLAVE=========== -USE test_rpl; -SELECT host, user, password, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%'; -host user password select_priv -INSERT INTO t1 VALUES(100, 'test'); - -******************** ANALYZE ******************** -ANALYZE TABLE t1; -Table Op Msg_type Msg_text -test_rpl.t1 analyze status OK - -******************** CHECK TABLE ******************** -CHECK TABLE t1; -Table Op Msg_type Msg_text -test_rpl.t1 check status OK - -******************** CHECKSUM TABLE ******************** -CHECKSUM TABLE t1; -Table Checksum -test_rpl.t1 1837058639 - -******************** OPTIMIZE TABLE ******************** -OPTIMIZE TABLE t1; -Table Op Msg_type Msg_text -test_rpl.t1 optimize note Table does not support optimize, doing recreate + analyze instead -test_rpl.t1 optimize status OK - -******************** REPAIR TABLE ******************** -REPAIR TABLE t1; -Table Op Msg_type Msg_text -test_rpl.t1 repair note The storage engine for the table doesn't support repair - -******************** SET VARIABLE ******************** -SET @test_rpl_var = 1; -SHOW VARIABLES LIKE 'test_rpl_var'; -Variable_name Value - -******************** SHOW ******************** -==========MASTER========== -SHOW DATABASES LIKE 'test_rpl%'; -Database (test_rpl%) -test_rpl -==========SLAVE=========== -SHOW DATABASES LIKE 'test_rpl%'; -Database (test_rpl%) -test_rpl - -******************** PROCEDURE ******************** -CREATE PROCEDURE p1 () -BEGIN -UPDATE t1 SET b = 'test' WHERE a = 201; -END| -CREATE PROCEDURE p2 () -BEGIN -UPDATE t1 SET b = UUID() WHERE a = 202; -END| -INSERT INTO t1 VALUES(201, 'test 201'); -CALL p1(); -INSERT INTO t1 VALUES(202, 'test 202'); -CALL p2(); -DELETE FROM t1 WHERE a = 202; -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -2 -SELECT * FROM t1 ORDER BY a; -a b -100 test -201 test -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -2 -SELECT * FROM t1 ORDER BY a; -a b -100 test -201 test -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -ALTER PROCEDURE p1 COMMENT 'p1'; -DROP PROCEDURE p1; -DROP PROCEDURE p2; -DELETE FROM t1; -DELETE FROM t2; - -******************** TRIGGER ******************** -CREATE TRIGGER tr1 BEFORE INSERT ON t1 -FOR EACH ROW BEGIN -INSERT INTO t2 SET a = NEW.a, b = NEW.b; -END| -INSERT INTO t1 VALUES (1, 'test'); -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 test -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test -SELECT COUNT(*) FROM t2; -COUNT(*) -1 -SELECT * FROM t2 ORDER BY a; -a b -1 test -DELETE FROM t1; -DELETE FROM t2; -DROP TRIGGER tr1; - - -******************** EVENTS ******************** -GRANT EVENT ON *.* TO 'root'@'localhost'; -INSERT INTO t1 VALUES(1, 'test1'); -CREATE EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1; -==========MASTER========== -SHOW EVENTS; -Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e1 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -==========SLAVE=========== -USE test_rpl; -SHOW EVENTS; -Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e1 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -ALTER EVENT e1 RENAME TO e2; -==========MASTER========== -SHOW EVENTS; -Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -==========SLAVE=========== -USE test_rpl; -SHOW EVENTS; -Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -==========MASTER========== -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -==========SLAVE=========== -USE test_rpl; -SELECT COUNT(*) FROM t1; -COUNT(*) -1 -SELECT * FROM t1 ORDER BY a; -a b -1 test1 -SELECT COUNT(*) FROM t2; -COUNT(*) -0 -SELECT * FROM t2 ORDER BY a; -a b -DROP EVENT e2; -==========MASTER========== -SHOW EVENTS; -Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -==========SLAVE=========== -USE test_rpl; -SHOW EVENTS; -Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -DELETE FROM t1; -DELETE FROM t2; - -******************** VIEWS ******************** -INSERT INTO t1 VALUES(1, 'test1'); -INSERT INTO t1 VALUES(2, 'test2'); -CREATE VIEW v1 AS SELECT * FROM t1 WHERE a = 1; -CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> UUID(); -==========MASTER========== -SHOW CREATE VIEW v1; -View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 1) latin1 latin1_swedish_ci -SELECT * FROM v1 ORDER BY a; -a b -1 test1 -==========SLAVE=========== -USE test_rpl; -SHOW CREATE VIEW v1; -View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 1) latin1 latin1_swedish_ci -SELECT * FROM v1 ORDER BY a; -a b -1 test1 -ALTER VIEW v1 AS SELECT * FROM t1 WHERE a = 2; -==========MASTER========== -SHOW CREATE VIEW v1; -View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 2) latin1 latin1_swedish_ci -SELECT * FROM v1 ORDER BY a; -a b -2 test2 -==========SLAVE=========== -USE test_rpl; -SHOW CREATE VIEW v1; -View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` where (`t1`.`a` = 2) latin1 latin1_swedish_ci -SELECT * FROM v1 ORDER BY a; -a b -2 test2 -DROP VIEW v1; -DROP VIEW v2; -DELETE FROM t1; -DELETE FROM t2; - - -******************** SHOW BINLOG EVENTS ******************** -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # CREATE DATABASE test_rpl -master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB -master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) -master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1' -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 WHERE a = 2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text 3') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) -master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text 33' -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; TRUNCATE t1 -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test' -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (1, 'start') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before savepoint s1') -master-bin.000001 # Query # # SAVEPOINT `s1` -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2') -master-bin.000001 # Query # # SAVEPOINT `s2` -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2') -master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 7 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111' -master-bin.000001 # Query # # use `test_rpl`; GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost' -master-bin.000001 # Query # # use `test_rpl`; REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost' -master-bin.000001 # Query # # use `test_rpl`; SET PASSWORD FOR 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000' -master-bin.000001 # Query # # use `test_rpl`; RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost' -master-bin.000001 # Query # # use `test_rpl`; DROP USER 'user_test_rpl_2'@'localhost' -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; ANALYZE TABLE t1 -master-bin.000001 # Query # # use `test_rpl`; OPTIMIZE TABLE t1 -master-bin.000001 # Query # # use `test_rpl`; REPAIR TABLE t1 -master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() -BEGIN -UPDATE t1 SET b = 'test' WHERE a = 201; -END -master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`() -BEGIN -UPDATE t1 SET b = UUID() WHERE a = 202; -END -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a = 201 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) -master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 202 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1' -master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p1 -master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p2 -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1 -FOR EACH ROW BEGIN -INSERT INTO t2 SET a = NEW.a, b = NEW.b; -END -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) -master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; DROP TRIGGER tr1 -master-bin.000001 # Query # # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'localhost' -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1 -master-bin.000001 # Query # # use `test_rpl`; ALTER EVENT e1 RENAME TO e2 -master-bin.000001 # Query # # use `test_rpl`; DROP EVENT e2 -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2') -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1 -master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID() -master-bin.000001 # Query # # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2 -master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v1 -master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v2 -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid # # COMMIT /* XID */ -drop database test_rpl; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result deleted file mode 100644 index 4ff45b46bd2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update.result +++ /dev/null @@ -1,29 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); -CREATE TABLE t1 ( -a int unsigned not null auto_increment primary key, -b int unsigned -) ENGINE=TokuDB; -CREATE TABLE t2 ( -a int unsigned not null auto_increment primary key, -b int unsigned -) ENGINE=TokuDB; -INSERT INTO t1 VALUES (NULL, 0); -INSERT INTO t1 SELECT NULL, 0 FROM t1; -INSERT INTO t2 VALUES (NULL, 0), (NULL,1); -SELECT * FROM t1 ORDER BY a; -a b -1 0 -2 0 -SELECT * FROM t2 ORDER BY a; -a b -1 0 -2 1 -UPDATE t1, t2 SET t1.b = t2.b WHERE t1.a = t2.a; -include/sync_slave_sql_with_master.inc -drop table t1, t2; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result deleted file mode 100644 index d811ce42143..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update2.result +++ /dev/null @@ -1,60 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT'); -drop table if exists t1,t2; -CREATE TABLE t1 ( -a int unsigned not null auto_increment primary key, -b int unsigned -) ENGINE=TokuDB; -CREATE TABLE t2 ( -a int unsigned not null auto_increment primary key, -b int unsigned -) ENGINE=TokuDB; -INSERT INTO t1 VALUES (NULL, 0); -INSERT INTO t1 SELECT NULL, 0 FROM t1; -INSERT INTO t2 VALUES (NULL, 0), (NULL,1); -SELECT * FROM t1 ORDER BY a; -a b -1 0 -2 0 -SELECT * FROM t2 ORDER BY a; -a b -1 0 -2 1 -UPDATE t1, t2 SET t1.b = (t2.b+4) WHERE t1.a = t2.a; -SELECT * FROM t1 ORDER BY a; -a b -1 4 -2 5 -SELECT * FROM t2 ORDER BY a; -a b -1 0 -2 1 -SELECT * FROM t1 ORDER BY a; -a b -1 4 -2 5 -SELECT * FROM t2 ORDER BY a; -a b -1 0 -2 1 -drop table t1,t2; -include/sync_slave_sql_with_master.inc -reset master; -RESET MASTER; -CREATE TABLE t1 ( a INT ); -INSERT INTO t1 VALUES (0); -UPDATE t1, (SELECT 3 as b) AS x SET t1.a = x.b; -select * from t1; -a -3 -include/sync_slave_sql_with_master.inc -select * from t1; -a -3 -drop table t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result deleted file mode 100644 index 48de0f97072..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_multi_update3.result +++ /dev/null @@ -1,202 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); - --------- Test for BUG#9361 -------- -CREATE TABLE t1 ( -a int unsigned not null auto_increment primary key, -b int unsigned -) ENGINE=TokuDB; -CREATE TABLE t2 ( -a int unsigned not null auto_increment primary key, -b int unsigned -) ENGINE=TokuDB; -INSERT INTO t1 VALUES (NULL, 0); -INSERT INTO t1 SELECT NULL, 0 FROM t1; -INSERT INTO t2 VALUES (NULL, 0), (NULL,1); -SELECT * FROM t1 ORDER BY a; -a b -1 0 -2 0 -SELECT * FROM t2 ORDER BY a; -a b -1 0 -2 1 -UPDATE t2, (SELECT a FROM t1 ORDER BY a) AS t SET t2.b = t.a+5 ; -SELECT * FROM t1 ORDER BY a; -a b -1 0 -2 0 -SELECT * FROM t2 ORDER BY a; -a b -1 6 -2 6 -include/sync_slave_sql_with_master.inc -SELECT * FROM t1 ORDER BY a; -a b -1 0 -2 0 -SELECT * FROM t2 ORDER BY a; -a b -1 6 -2 6 -drop table t1,t2; - --------- Test 1 for BUG#9361 -------- -DROP TABLE IF EXISTS t1; -DROP TABLE IF EXISTS t2; -CREATE TABLE t1 ( -a1 char(30), -a2 int, -a3 int, -a4 char(30), -a5 char(30) -); -CREATE TABLE t2 ( -b1 int, -b2 char(30) -); -INSERT INTO t1 VALUES ('Yes', 1, NULL, 'foo', 'bar'); -INSERT INTO t2 VALUES (1, 'baz'); -UPDATE t1 a, t2 -SET a.a1 = 'No' -WHERE a.a2 = -(SELECT b1 -FROM t2 -WHERE b2 = 'baz') -AND a.a3 IS NULL -AND a.a4 = 'foo' -AND a.a5 = 'bar'; -include/sync_slave_sql_with_master.inc -SELECT * FROM t1; -a1 a2 a3 a4 a5 -No 1 NULL foo bar -SELECT * FROM t2; -b1 b2 -1 baz -DROP TABLE t1, t2; - --------- Test 2 for BUG#9361 -------- -DROP TABLE IF EXISTS t1; -DROP TABLE IF EXISTS t2; -DROP TABLE IF EXISTS t3; -CREATE TABLE t1 ( -i INT, -j INT, -x INT, -y INT, -z INT -); -CREATE TABLE t2 ( -i INT, -k INT, -x INT, -y INT, -z INT -); -CREATE TABLE t3 ( -j INT, -k INT, -x INT, -y INT, -z INT -); -INSERT INTO t1 VALUES ( 1, 2,13,14,15); -INSERT INTO t2 VALUES ( 1, 3,23,24,25); -INSERT INTO t3 VALUES ( 2, 3, 1,34,35), ( 2, 3, 1,34,36); -UPDATE t1 AS a -INNER JOIN t2 AS b -ON a.i = b.i -INNER JOIN t3 AS c -ON a.j = c.j AND b.k = c.k -SET a.x = b.x, -a.y = b.y, -a.z = ( -SELECT sum(z) -FROM t3 -WHERE y = 34 -) -WHERE b.x = 23; -include/sync_slave_sql_with_master.inc -SELECT * FROM t1; -i j x y z -1 2 23 24 71 -DROP TABLE t1, t2, t3; -DROP TABLE IF EXISTS t1; -Warnings: -Note 1051 Unknown table 'test.t1' -DROP TABLE IF EXISTS t2; -Warnings: -Note 1051 Unknown table 'test.t2' -CREATE TABLE t1 ( -idp int(11) NOT NULL default '0', -idpro int(11) default NULL, -price decimal(19,4) default NULL, -PRIMARY KEY (idp) -); -CREATE TABLE t2 ( -idpro int(11) NOT NULL default '0', -price decimal(19,4) default NULL, -nbprice int(11) default NULL, -PRIMARY KEY (idpro) -); -INSERT INTO t1 VALUES -(1,1,'3.0000'), -(2,2,'1.0000'), -(3,1,'1.0000'), -(4,1,'4.0000'), -(5,3,'2.0000'), -(6,2,'4.0000'); -INSERT INTO t2 VALUES -(1,'0.0000',0), -(2,'0.0000',0), -(3,'0.0000',0); -update -t2 -join -( select idpro, min(price) as min_price, count(*) as nbr_price -from t1 -where idpro>0 and price>0 -group by idpro -) as table_price -on t2.idpro = table_price.idpro -set t2.price = table_price.min_price, -t2.nbprice = table_price.nbr_price; -select "-- MASTER AFTER JOIN --" as ""; - --- MASTER AFTER JOIN -- -select * from t1; -idp idpro price -1 1 3.0000 -2 2 1.0000 -3 1 1.0000 -4 1 4.0000 -5 3 2.0000 -6 2 4.0000 -select * from t2; -idpro price nbprice -1 1.0000 3 -2 1.0000 2 -3 2.0000 1 -include/sync_slave_sql_with_master.inc -select "-- SLAVE AFTER JOIN --" as ""; - --- SLAVE AFTER JOIN -- -select * from t1; -idp idpro price -1 1 3.0000 -2 2 1.0000 -3 1 1.0000 -4 1 4.0000 -5 3 2.0000 -6 2 4.0000 -select * from t2; -idpro price nbprice -1 1.0000 3 -2 1.0000 2 -3 2.0000 1 -DROP TABLE t1, t2; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ff.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ff.result deleted file mode 100644 index 76a5e31b969..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ff.result +++ /dev/null @@ -1,24 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl%'; -Variable_name Value -tokudb_rpl_check_readonly OFF -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 0 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ft.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ft.result deleted file mode 100644 index 2930cb019b4..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_ft.result +++ /dev/null @@ -1,24 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 0 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -0 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tf.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tf.result deleted file mode 100644 index 76a5e31b969..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tf.result +++ /dev/null @@ -1,24 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl%'; -Variable_name Value -tokudb_rpl_check_readonly OFF -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 0 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tt.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tt.result deleted file mode 100644 index 0cba2a1cddb..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_read_only_tt.result +++ /dev/null @@ -1,24 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 0 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_rfr_partition_table.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_rfr_partition_table.result deleted file mode 100644 index 4594959c6d0..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_rfr_partition_table.result +++ /dev/null @@ -1,36 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression(".*read free replication is disabled for TokuDB table.*continue with rows lookup"); -CREATE TABLE t1 (id int(11) NOT NULL, pid int(11), PRIMARY KEY (id)) ENGINE=TokuDB -PARTITION BY RANGE (id) -(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, -PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, -PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); -insert into t1 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); -CREATE TABLE t2 (id int(11) NOT NULL, pid int(11), key idx_1(id)) ENGINE=TokuDB -PARTITION BY RANGE (id) -(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, -PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, -PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); -insert into t2 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); -include/stop_slave.inc -set global debug= "+d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; -include/start_slave.inc -insert into t1 values(21, 21); -delete from t1 where id = 11; -update t1 set pid = 2 where id = 1; -include/diff_tables.inc [master:test.t1, slave:test.t1] -insert into t2 values(21, 21); -delete from t2 where id = 11; -update t2 set pid = 2 where id = 1; -include/diff_tables.inc [master:test.t2, slave:test.t2] -drop table t1; -drop table t2; -include/stop_slave.inc -set global debug= "-d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; -set global debug= @saved_debug; -include/start_slave.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result deleted file mode 100644 index 04578c3ff68..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_crash_safe.result +++ /dev/null @@ -1,2183 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression('Attempting backtrace'); -call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); -call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); -call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); -################################################################################### -# PREPARE EXECUTION -################################################################################### -include/stop_slave.inc -SHOW CREATE TABLE mysql.slave_relay_log_info; -Table Create Table -slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( - `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', - `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', - `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', - `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', - `Number_of_workers` int(10) unsigned NOT NULL, - `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' -SHOW CREATE TABLE mysql.slave_worker_info; -Table Create Table -slave_worker_info CREATE TABLE `slave_worker_info` ( - `Id` int(10) unsigned NOT NULL, - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Relay_log_pos` bigint(20) unsigned NOT NULL, - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_seqno` int(10) unsigned NOT NULL, - `Checkpoint_group_size` int(10) unsigned NOT NULL, - `Checkpoint_group_bitmap` blob NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' -ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb; -ALTER TABLE mysql.slave_worker_info ENGINE= Innodb; -SHOW CREATE TABLE mysql.slave_relay_log_info; -Table Create Table -slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( - `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', - `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', - `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', - `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', - `Number_of_workers` int(10) unsigned NOT NULL, - `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' -SHOW CREATE TABLE mysql.slave_worker_info; -Table Create Table -slave_worker_info CREATE TABLE `slave_worker_info` ( - `Id` int(10) unsigned NOT NULL, - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Relay_log_pos` bigint(20) unsigned NOT NULL, - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_seqno` int(10) unsigned NOT NULL, - `Checkpoint_group_size` int(10) unsigned NOT NULL, - `Checkpoint_group_bitmap` blob NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' -include/start_slave.inc -rpl_mixing_engines.inc [commands=configure] -CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1); -CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -END| -CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -END| -CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -RETURN "fc_i_tt_5_suc"; -END| -CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -RETURN "fc_i_nt_5_suc"; -END| -CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -RETURN "fc_i_nt_3_tt_3_suc"; -END| -CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id; -INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -################################################################################### -# EXECUTE CASES CRASHING THE XID -################################################################################### - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (9, 1); -fc_i_tt_5_suc (9, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (10, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (12, 4); -fc_i_tt_5_suc (12, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (13, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (15, 2); -fc_i_tt_5_suc (15, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (16, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (19, 1); -fc_i_tt_5_suc (19, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (20, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (22, 4); -fc_i_tt_5_suc (22, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (23, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (25, 2); -fc_i_tt_5_suc (25, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (26, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (29, 1); -fc_i_tt_5_suc (29, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (30, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (32, 4); -fc_i_tt_5_suc (32, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (33, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (35, 2); -fc_i_tt_5_suc (35, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (36, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (39, 1); -fc_i_tt_5_suc (39, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (40, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (42, 4); -fc_i_tt_5_suc (42, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (43, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (45, 2); -fc_i_tt_5_suc (45, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (46, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_5) -master-bin.000001 # Table_map # # table_id: # (test.tt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map # # table_id: # (test.tt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc -################################################################################### -# EXECUTE CASES CRASHING THE BEGIN/COMMIT -################################################################################### - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_and_update_pos";; -FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=N] --b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_and_update_pos";; -FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=N-trig] --b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_5) -master-bin.000001 # Table_map # # table_id: # (test.nt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_5) -master-bin.000001 # Table_map # # table_id: # (test.nt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_and_update_pos";; -FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=N-func] --b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_nt_5_suc (49, 1); -fc_i_nt_5_suc (49, 1) -fc_i_nt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_5) -master-bin.000001 # Table_map # # table_id: # (test.nt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.nt_5) -master-bin.000001 # Table_map # # table_id: # (test.nt_6) -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc -################################################################################### -# CHECK CONSISTENCY -################################################################################### -include/sync_slave_sql_with_master.inc -################################################################################### -# CLEAN -################################################################################### -rpl_mixing_engines.inc [commands=clean] -DROP TABLE tt_1; -DROP TABLE tt_2; -DROP TABLE tt_3; -DROP TABLE tt_4; -DROP TABLE tt_5; -DROP TABLE tt_6; -DROP TABLE nt_1; -DROP TABLE nt_2; -DROP TABLE nt_3; -DROP TABLE nt_4; -DROP TABLE nt_5; -DROP TABLE nt_6; -DROP PROCEDURE pc_i_tt_5_suc; -DROP PROCEDURE pc_i_nt_5_suc; -DROP FUNCTION fc_i_tt_5_suc; -DROP FUNCTION fc_i_nt_5_suc; -DROP FUNCTION fc_i_nt_3_tt_3_suc; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result deleted file mode 100644 index a0713d01593..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_blobs.result +++ /dev/null @@ -1,4739 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -### engines: TokuDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -### engines: TokuDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -### engines: TokuDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check when there is no key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the AI (they are not updated) -### will not break replication (check even if there is a key in the table) -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table) -### will not break replication -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that updates without blobs in the BI (PK exists int the table) -### will not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob in a key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a unique (not null) key does not break replication -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Asserts that declaring a blob as part of a primary key does not break replication -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result deleted file mode 100644 index d86105a3440..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_full.result +++ /dev/null @@ -1,3681 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -### engines: TokuDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### Testing with TokuDB storage engine -CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -#### case #1: AI: no values logged -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -INSERT INTO t1 VALUES (); -SELECT * FROM t1; -c1 -100 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -100 -SELECT * FROM t1; -c1 -100 -DROP TABLE t1; -include/rpl_sync.inc -#### case #2: AI: not empty but slave does not have usable data for its columns (INSERT) -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 int DEFAULT 100, c2 int, primary key(c2)) Engine=ENGINE; -SET SQL_LOG_BIN=1; -INSERT INTO t1(c2) VALUES (1); -SELECT * FROM t1; -c1 c2 -100 1 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -100 -SELECT * FROM t1; -c1 -100 -DROP TABLE t1; -include/rpl_sync.inc -#### case #3: BI: usable columns on the slave, AI: no usable columns on the slave -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 int DEFAULT 100, c2 int) Engine=ENGINE; -SET SQL_LOG_BIN=1; -INSERT INTO t1 VALUES (1,1); -SELECT * FROM t1; -c1 c2 -1 1 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -1 -SELECT * FROM t1; -c1 -1 -UPDATE t1 SET c2=2 WHERE c1=1 AND c2=1; -SELECT * FROM t1; -c1 c2 -1 2 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -1 -SELECT * FROM t1; -c1 -1 -DROP TABLE t1; -include/rpl_sync.inc -#### case #4: AI, BI: no usable columns on the slave (NOOP UPDATE). -#### -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 int DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 int DEFAULT 100, c2 int, c3 int, primary key(c2)) Engine=ENGINE; -SET SQL_LOG_BIN=1; -INSERT INTO t1 VALUES (1,1,1); -SELECT * FROM t1; -c1 c2 c3 -1 1 1 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -1 -SELECT * FROM t1; -c1 -1 -UPDATE t1 SET c3=300 WHERE c2=1; -SELECT * FROM t1; -c1 c2 c3 -1 1 300 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -1 -SELECT * FROM t1; -c1 -1 -DROP TABLE t1; -include/rpl_sync.inc -#### case #5: BI: no usable columns on the slave, AI: usable columns on the slave (slave must stop). -#### -CREATE TABLE t1 (c1 INT DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 INT DEFAULT 100) Engine=ENGINE; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=0; -CREATE TABLE t1 (c1 INT DEFAULT 100, c2 INT PRIMARY KEY) Engine=ENGINE; -SET SQL_LOG_BIN=1; -INSERT INTO t1 VALUES (1,1); -SELECT * FROM t1; -c1 c2 -1 1 -include/rpl_sync.inc -SELECT * FROM t1; -c1 -1 -SELECT * FROM t1; -c1 -1 -UPDATE t1 SET c1=300 WHERE c2=1; -SELECT * FROM t1; -c1 c2 -300 1 -SET SQL_LOG_BIN=0; -call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032"); -call mtr.add_suppression("Slave SQL: .*Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032"); -call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); -SET SQL_LOG_BIN=1; -include/wait_for_slave_sql_error_and_skip.inc [errno=1032] -DROP TABLE t1; -include/rpl_sync.inc -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result deleted file mode 100644 index 45a5e6ee341..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_min.result +++ /dev/null @@ -1,3522 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -### engines: TokuDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result deleted file mode 100644 index 52906a7ee36..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_eng_noblob.result +++ /dev/null @@ -1,3522 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -### engines: TokuDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes in master, but NULLABLE on first slave -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite NOT NULL Unique key with holes -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int NOT NULL, c2 char(1), c3 char(1) NOT NULL, c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key with holes -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c3)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Primary Key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Primary key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Unique key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), unique key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -****** TEST: One Composite key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1,c2)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: One key -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1), key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -******* TEST: No keys -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 char(1), c3 char(1), c4 char(1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, '1', '1', '1' ); -INSERT INTO t VALUES (4, '4', '4', '4' ); -INSERT INTO t VALUES (7, '7', '7', '7' ); -INSERT INTO t VALUES (9, '9', '9', NULL ); -INSERT INTO t VALUES (2, '1', '2', '2' ); -INSERT INTO t VALUES (3, '1', '3', '2' ); -include/rpl_sync.inc -UPDATE t SET c4 = '7'; -UPDATE t SET c4 = '5' WHERE c1 = 1; -UPDATE t SET c2 = '5' WHERE c1 = 1; -UPDATE t SET c1 = '5' WHERE c1 = 1; -UPDATE t SET c4 = '8' WHERE c2 = '4'; -UPDATE t SET c1 = '8' WHERE c2 = '4'; -UPDATE t SET c2 = '8' WHERE c2 = '4'; -UPDATE t SET c3 = '0' WHERE c4 = NULL; -UPDATE t SET c2 = '0' WHERE c4 = '0'; -UPDATE t SET c2 = '2' WHERE c4 = '2'; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c1 = 7; -DELETE FROM t WHERE c1 = 8; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result deleted file mode 100644 index e802156918e..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_full.result +++ /dev/null @@ -1,3505 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -### engines: TokuDB, TokuDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result deleted file mode 100644 index 368b3b5f938..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_min.result +++ /dev/null @@ -1,3530 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'MINIMAL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_2', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -CON: 'server_3', IMG: 'MINIMAL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'MINIMAL'; -SET GLOBAL binlog_row_image= 'MINIMAL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image MINIMAL -### engines: TokuDB, TokuDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result deleted file mode 100644 index bb6c3ea1c3e..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_img_idx_noblob.result +++ /dev/null @@ -1,3530 +0,0 @@ -include/rpl_init.inc [topology=1->2->3] -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -CON: 'server_1', IMG: 'NOBLOB', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -CON: 'server_2', IMG: 'NOBLOB', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -CON: 'server_3', IMG: 'NOBLOB', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'NOBLOB'; -SET GLOBAL binlog_row_image= 'NOBLOB'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image NOBLOB -### engines: TokuDB, TokuDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, TokuDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: TokuDB, InnoDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, TokuDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= TokuDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, TokuDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= TokuDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -### engines: InnoDB, InnoDB, InnoDB -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no keys slaves with no keys as well -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with keys -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields (first slave with UK NOT NULL, second with PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with no key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, first slave with key on different field and second slave with key on yet another different field. -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields (first slave has UK NOT NULL) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with Key, slaves with PKs on different fields -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, slaves with no keys -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NULLABLE, first slave with K on different field second slave with key on yet another different field -CREATE TABLE t (c1 int, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL, first slave with UK NOT NULL on different field -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with UK NOT NULL and slaves with PK on different fields -CREATE TABLE t (c1 int NOT NULL, c2 blob, c3 int, unique key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and no keys on the slaves -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Master with PK and first slave with KEY only -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c3)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave (which has unique NOT NULL key instead of PK) -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -SET SQL_LOG_BIN=0; -### Different PKs on master and first slave -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= InnoDB;; -CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= InnoDB;; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -SET SQL_LOG_BIN=1; -INSERT INTO t VALUES (1, "a", 10); -INSERT INTO t VALUES (2, "b", 20); -INSERT INTO t VALUES (3, "c", 30); -include/rpl_sync.inc -UPDATE t SET c1=10 WHERE c2="a"; -UPDATE t SET c1=20 WHERE c1=2; -UPDATE t SET c1=30 WHERE c3=30; -UPDATE t SET c3=40 WHERE c1=30; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DELETE FROM t WHERE c2="a"; -DELETE FROM t WHERE c1=20; -DELETE FROM t; -include/rpl_sync.inc -include/diff_tables.inc [server_1:test.t, server_2:test.t, server_3:test.t] -DROP TABLE t; -include/rpl_sync.inc -CON: 'server_1', IMG: 'FULL', RESTART SLAVE: 'N' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_2', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -CON: 'server_3', IMG: 'FULL', RESTART SLAVE: 'Y' -SET SESSION binlog_row_image= 'FULL'; -SET GLOBAL binlog_row_image= 'FULL'; -include/stop_slave.inc -include/start_slave.inc -FLUSH TABLES; -SHOW VARIABLES LIKE 'binlog_row_image'; -Variable_name Value -binlog_row_image FULL -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result deleted file mode 100644 index 87ffbca71bc..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_log.result +++ /dev/null @@ -1,275 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -include/sync_slave_sql_with_master.inc -include/stop_slave.inc -include/wait_for_slave_to_stop.inc -reset master; -reset slave; -start slave; -include/wait_for_slave_to_start.inc -create table t1(n int not null auto_increment primary key)ENGINE=TokuDB; -insert into t1 values (NULL); -drop table t1; -create table t1 (word char(20) not null)ENGINE=TokuDB; -load data infile 'LOAD_FILE' into table t1 ignore 1 lines; -select count(*) from t1; -count(*) -69 -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ -master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -flush logs; -create table t3 (a int)ENGINE=TokuDB; -select * from t1 order by 1 asc; -word -Aarhus -Aaron -Aaron -Ababa -Ababa -aback -aback -abaft -abaft -abandon -abandon -abandoned -abandoned -abandoning -abandoning -abandonment -abandonment -abandons -abandons -abase -abased -abasement -abasements -abases -abash -abashed -abashes -abashing -abasing -abate -abated -abatement -abatements -abater -abates -abating -Abba -abbe -abbey -abbeys -abbot -abbots -Abbott -abbreviate -abbreviated -abbreviates -abbreviating -abbreviation -abbreviations -Abby -abdomen -abdomens -abdominal -abduct -abducted -abduction -abductions -abductor -abductors -abducts -Abe -abed -Abel -Abelian -Abelson -Aberdeen -Abernathy -aberrant -aberration -include/sync_slave_sql_with_master.inc -select * from t1 order by 1 asc; -word -Aarhus -Aaron -Aaron -Ababa -Ababa -aback -aback -abaft -abaft -abandon -abandon -abandoned -abandoned -abandoning -abandoning -abandonment -abandonment -abandons -abandons -abase -abased -abasement -abasements -abases -abash -abashed -abashes -abashing -abasing -abate -abated -abatement -abatements -abater -abates -abating -Abba -abbe -abbey -abbeys -abbot -abbots -Abbott -abbreviate -abbreviated -abbreviates -abbreviating -abbreviation -abbreviations -Abby -abdomen -abdomens -abdominal -abduct -abducted -abduction -abductions -abductor -abductors -abducts -Abe -abed -Abel -Abelian -Abelson -Aberdeen -Abernathy -aberrant -aberration -flush logs; -include/stop_slave.inc -include/start_slave.inc -create table t2 (n int)ENGINE=TokuDB; -insert into t2 values (1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ -master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Rotate # # master-bin.000002;pos=POS -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB -master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB -master-bin.000002 # Query # # BEGIN -master-bin.000002 # Table_map # # table_id: # (test.t2) -master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000002 # Xid # # COMMIT /* XID */ -show binary logs; -Log_name File_size -master-bin.000001 # -master-bin.000002 # -include/sync_slave_sql_with_master.inc -show binary logs; -Log_name File_size -slave-bin.000001 # -slave-bin.000002 # -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=TokuDB -slave-bin.000001 # Query # # BEGIN -slave-bin.000001 # Table_map # # table_id: # (test.t1) -slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -slave-bin.000001 # Xid # # COMMIT /* XID */ -slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ -slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=TokuDB -slave-bin.000001 # Query # # BEGIN -slave-bin.000001 # Table_map # # table_id: # (test.t1) -slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -slave-bin.000001 # Xid # # COMMIT /* XID */ -slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB -slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB -slave-bin.000002 # Query # # BEGIN -slave-bin.000002 # Table_map # # table_id: # (test.t2) -slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F -slave-bin.000002 # Xid # # COMMIT /* XID */ -include/check_slave_is_running.inc -show binlog events in 'slave-bin.000005' from 4; -ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -include/rpl_reset.inc -create table t1(a int auto_increment primary key, b int); -insert into t1 values (NULL, 1); -set insert_id=5; -insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -select * from t1; -a b -1 1 -5 1 -6 1 -drop table t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result deleted file mode 100644 index d4a50261d60..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_lower_case_table_names.result +++ /dev/null @@ -1,51 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -******** [ MASTER ] ******** -CREATE DATABASE BUG_37656; -use BUG_37656; -show databases like 'BUG_37656'; -Database (BUG_37656) -BUG_37656 -******** [ SLAVE ] ******** -show databases like 'bug_37656'; -Database (bug_37656) -bug_37656 -******** [ MASTER ] ******** -CREATE TABLE T1 (a int); -CREATE TABLE T2 (b int) ENGINE=TokuDB; -CREATE TABLE T3 (txt TEXT); -show tables; -Tables_in_BUG_37656 -T1 -T2 -T3 -******** [ SLAVE ] ******** -use bug_37656; -show tables; -Tables_in_bug_37656 -t2 -t3 -CREATE TABLE t1 (a INT); -******** [ MASTER ] ******** -use BUG_37656; -INSERT INTO T1 VALUES (1); -INSERT INTO T2 VALUES (1); -use test; -INSERT INTO BUG_37656.T1 VALUES (2); -INSERT INTO BUG_37656.T2 VALUES (2); -LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE BUG_37656.T3; -******** [ SLAVE ] ******** -include/diff_tables.inc [master:BUG_37656.T2, slave:bug_37656.t2] -include/diff_tables.inc [master:BUG_37656.T3, slave:bug_37656.t3] -******** [ MASTER ] ******** -DROP DATABASE BUG_37656; -include/rpl_reset.inc -CREATE DATABASE B50653; -USE B50653; -CREATE PROCEDURE b50653_proc() BEGIN SELECT 1; END; -DROP PROCEDURE b50653_proc; -DROP DATABASE B50653; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result deleted file mode 100644 index dc3a8a55741..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp003.result +++ /dev/null @@ -1,60 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -DROP PROCEDURE IF EXISTS test.p1; -DROP PROCEDURE IF EXISTS test.p2; -DROP TABLE IF EXISTS test.t1; -CREATE TABLE test.t1(a INT,PRIMARY KEY(a))ENGINE=TOKUDB; -CREATE PROCEDURE test.p1() -BEGIN -INSERT INTO test.t1 VALUES (4); -SELECT get_lock("test", 100); -UPDATE test.t1 set a=a+4 WHERE a=4; -END| -CREATE PROCEDURE test.p2() -BEGIN -UPDATE test.t1 SET a=a+1; -END| -SELECT get_lock("test", 200); -get_lock("test", 200) -1 -CALL test.p1(); -CALL test.p2(); -SELECT release_lock("test"); -release_lock("test") -1 -get_lock("test", 100) -1 -SELECT release_lock("test"); -release_lock("test") -1 -SELECT * FROM test.t1; -a -5 -include/sync_slave_sql_with_master.inc -SELECT * FROM test.t1; -a -5 -DROP TABLE IF EXISTS test.t1; -CREATE TABLE test.t1(a INT,PRIMARY KEY(a))ENGINE=TOKUDB; -CALL test.p2(); -CALL test.p1(); -get_lock("test", 100) -1 -SELECT release_lock("test"); -release_lock("test") -1 -SELECT * FROM test.t1; -a -8 -include/sync_slave_sql_with_master.inc -SELECT * FROM test.t1; -a -8 -DROP PROCEDURE IF EXISTS test.p1; -DROP PROCEDURE IF EXISTS test.p2; -DROP TABLE IF EXISTS test.t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result deleted file mode 100644 index b6fc475eeef..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_row_sp006.result +++ /dev/null @@ -1,47 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -DROP TABLE IF EXISTS t1; -DROP TABLE IF EXISTS t2; -DROP PROCEDURE IF EXISTS p1; -DROP PROCEDURE IF EXISTS p2; -CREATE TABLE IF NOT EXISTS t1(name CHAR(16), birth DATE,PRIMARY KEY(name))ENGINE=TokuDB; -CREATE TABLE IF NOT EXISTS t2(name CHAR(16), age INT ,PRIMARY KEY(name))ENGINE=TokuDB; -CREATE PROCEDURE p1() -BEGIN -DECLARE done INT DEFAULT 0; -DECLARE spa CHAR(16); -DECLARE spb INT; -DECLARE cur1 CURSOR FOR SELECT name, -(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)--.' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=# -slave-bin.000001 # Xid # # COMMIT /* XID */ -slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=TokuDB -slave-bin.000001 # Rotate # # slave-bin.000002;pos=POS -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=TokuDB -slave-bin.000002 # Query # # BEGIN -slave-bin.000002 # Query # # use `test`; insert into t2 values (1) -slave-bin.000002 # Xid # # COMMIT /* XID */ -include/check_slave_is_running.inc -show binlog events in 'slave-bin.000005' from 4; -ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log -DROP TABLE t1; -DROP TABLE t2; -DROP TABLE t3; -include/rpl_reset.inc -create table t1(a int auto_increment primary key, b int); -insert into t1 values (NULL, 1); -set insert_id=5; -insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # use `test`; create table t1(a int auto_increment primary key, b int) -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Intvar # # INSERT_ID=1 -master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, 1) -master-bin.000001 # Query # # COMMIT -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Intvar # # LAST_INSERT_ID=1 -master-bin.000001 # Intvar # # INSERT_ID=5 -master-bin.000001 # Query # # use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) -master-bin.000001 # Query # # COMMIT -select * from t1; -a b -1 1 -5 1 -6 1 -drop table t1; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result deleted file mode 100644 index 226a2b93140..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_crash_safe.result +++ /dev/null @@ -1,1773 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -call mtr.add_suppression('Attempting backtrace'); -call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); -call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); -call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); -################################################################################### -# PREPARE EXECUTION -################################################################################### -include/stop_slave.inc -SHOW CREATE TABLE mysql.slave_relay_log_info; -Table Create Table -slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( - `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', - `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', - `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', - `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', - `Number_of_workers` int(10) unsigned NOT NULL, - `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' -SHOW CREATE TABLE mysql.slave_worker_info; -Table Create Table -slave_worker_info CREATE TABLE `slave_worker_info` ( - `Id` int(10) unsigned NOT NULL, - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Relay_log_pos` bigint(20) unsigned NOT NULL, - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_seqno` int(10) unsigned NOT NULL, - `Checkpoint_group_size` int(10) unsigned NOT NULL, - `Checkpoint_group_bitmap` blob NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' -ALTER TABLE mysql.slave_relay_log_info ENGINE= Innodb; -ALTER TABLE mysql.slave_worker_info ENGINE= Innodb; -SHOW CREATE TABLE mysql.slave_relay_log_info; -Table Create Table -slave_relay_log_info CREATE TABLE `slave_relay_log_info` ( - `Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.', - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.', - `Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.', - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.', - `Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.', - `Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.', - `Number_of_workers` int(10) unsigned NOT NULL, - `Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.', - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information' -SHOW CREATE TABLE mysql.slave_worker_info; -Table Create Table -slave_worker_info CREATE TABLE `slave_worker_info` ( - `Id` int(10) unsigned NOT NULL, - `Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Relay_log_pos` bigint(20) unsigned NOT NULL, - `Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL, - `Checkpoint_seqno` int(10) unsigned NOT NULL, - `Checkpoint_group_size` int(10) unsigned NOT NULL, - `Checkpoint_group_bitmap` blob NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information' -include/start_slave.inc -rpl_mixing_engines.inc [commands=configure] -CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM; -CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = TokuDB; -INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1); -INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1); -INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1); -CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -END| -CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -END| -CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -RETURN "fc_i_tt_5_suc"; -END| -CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1); -RETURN "fc_i_nt_5_suc"; -END| -CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64) -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id); -RETURN "fc_i_nt_3_tt_3_suc"; -END| -CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; -INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id; -INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW -BEGIN -DECLARE in_stmt_id INTEGER; -SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id; -SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id; -INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id); -INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1); -END| -################################################################################### -# EXECUTE CASES CRASHING THE XID -################################################################################### - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (7, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (8, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (9, 1); -fc_i_tt_5_suc (9, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(9,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (10, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',10), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (11, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (11, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (12, 4); -fc_i_tt_5_suc (12, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(12,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (12, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(12,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (13, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (13, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',13), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (14, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (14, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (15, 2); -fc_i_tt_5_suc (15, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(15,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (15, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_apply";; -FAILURE d,crash_after_apply and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (16, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',16), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (16, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (17, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (18, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (19, 1); -fc_i_tt_5_suc (19, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(19,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(19,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (20, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',20), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (21, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (21, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (22, 4); -fc_i_tt_5_suc (22, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(22,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (22, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(22,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (23, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (23, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',23), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (24, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (24, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (25, 2); -fc_i_tt_5_suc (25, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(25,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(25,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (25, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_before_update_pos";; -FAILURE d,crash_before_update_pos and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (26, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',26), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (26, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (27, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (28, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (29, 1); -fc_i_tt_5_suc (29, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(29,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(29,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (30, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (31, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (31, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (32, 4); -fc_i_tt_5_suc (32, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(32,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (32, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(32,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (33, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (33, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',33), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (34, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (34, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (35, 2); -fc_i_tt_5_suc (35, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(35,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (35, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_update_pos_before_apply";; -FAILURE d,crash_after_update_pos_before_apply and OUTCOME O1 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (36, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',36), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (36, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T] --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (37, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-trig] --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (38, 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-func] --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (39, 1); -fc_i_tt_5_suc (39, 1) -fc_i_tt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(39,1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=T-proc] --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (40, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Xid # # COMMIT /* XID */ -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',40), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-trig C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-trig C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (41, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (41, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-trig C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-func C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (42, 4); -fc_i_tt_5_suc (42, 4) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(42,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-func C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (42, 2) -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(42,4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-func C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T T-proc C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (43, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T T-proc C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (43, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',43), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T T-proc C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-trig T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-trig T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES (44, 2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (44, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-trig T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-func T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_tt_5_suc (45, 2); -fc_i_tt_5_suc (45, 2) -fc_i_tt_5_suc -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-func T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(45,2) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (45, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-func T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_before_update_pos";; -FAILURE d,crash_after_commit_before_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=B T-proc T C] --b-b-b-b-b-b-b-b-b-b-b- >> B << -b-b-b-b-b-b-b-b-b-b-b- -BEGIN; -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T-proc << -b-b-b-b-b-b-b-b-b-b-b- -CALL pc_i_tt_5_suc (46, 2); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> T << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4); -include/show_binlog_events.inc --e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b- -COMMIT; -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> B T-proc T C << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1)) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',46), NAME_CONST('in_stmt_id',1) + 1) -master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (46, 4) -master-bin.000001 # Xid # # COMMIT /* XID */ --e-e-e-e-e-e-e-e-e-e-e- >> B T-proc T C << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc -################################################################################### -# EXECUTE CASES CRASHING THE BEGIN/COMMIT -################################################################################### - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_and_update_pos";; -FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=N] --b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1) -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> N << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (47, 1) -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_and_update_pos";; -FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=N-trig] --b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- -INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1); -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1) -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> N-trig << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES (48, 1) -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-trig << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc - - - -STOP SLAVE SQL_THREAD; -include/wait_for_slave_sql_to_stop.inc -SET GLOBAL debug="d,crash_after_commit_and_update_pos";; -FAILURE d,crash_after_commit_and_update_pos and OUTCOME O2 -rpl_mixing_engines.inc [commands=N-func] --b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- -SELECT fc_i_nt_5_suc (49, 1); -fc_i_nt_5_suc (49, 1) -fc_i_nt_5_suc -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(49,1) -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- --b-b-b-b-b-b-b-b-b-b-b- >> N-func << -b-b-b-b-b-b-b-b-b-b-b- -include/show_binlog_events.inc -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_nt_5_suc`(49,1) -master-bin.000001 # Query # # COMMIT --e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e- - -include/rpl_reconnect.inc -START SLAVE; -include/wait_for_slave_to_start.inc -################################################################################### -# CHECK CONSISTENCY -################################################################################### -include/sync_slave_sql_with_master.inc -################################################################################### -# CLEAN -################################################################################### -rpl_mixing_engines.inc [commands=clean] -DROP TABLE tt_1; -DROP TABLE tt_2; -DROP TABLE tt_3; -DROP TABLE tt_4; -DROP TABLE tt_5; -DROP TABLE tt_6; -DROP TABLE nt_1; -DROP TABLE nt_2; -DROP TABLE nt_3; -DROP TABLE nt_4; -DROP TABLE nt_5; -DROP TABLE nt_6; -DROP PROCEDURE pc_i_tt_5_suc; -DROP PROCEDURE pc_i_nt_5_suc; -DROP FUNCTION fc_i_tt_5_suc; -DROP FUNCTION fc_i_nt_5_suc; -DROP FUNCTION fc_i_nt_3_tt_3_suc; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result deleted file mode 100644 index e3d83733ed0..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_stm_mixed_lower_case_table_names.result +++ /dev/null @@ -1,48 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -******** [ MASTER ] ******** -CREATE DATABASE BUG_37656; -use BUG_37656; -show databases like 'BUG_37656'; -Database (BUG_37656) -BUG_37656 -******** [ SLAVE ] ******** -show databases like 'bug_37656'; -Database (bug_37656) -bug_37656 -******** [ MASTER ] ******** -CREATE TABLE T1 (a int); -CREATE TABLE T2 (b int) ENGINE=TokuDB; -CREATE TABLE T3 (txt TEXT); -show tables; -Tables_in_BUG_37656 -T1 -T2 -T3 -******** [ SLAVE ] ******** -use bug_37656; -show tables; -Tables_in_bug_37656 -t2 -t3 -CREATE TABLE t1 (a INT); -******** [ MASTER ] ******** -use BUG_37656; -INSERT INTO T1 VALUES (1); -INSERT INTO T2 VALUES (1); -LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE BUG_37656.T3; -******** [ SLAVE ] ******** -include/diff_tables.inc [master:BUG_37656.T2, slave:bug_37656.t2] -include/diff_tables.inc [master:BUG_37656.T3, slave:bug_37656.t3] -******** [ MASTER ] ******** -DROP DATABASE BUG_37656; -include/rpl_reset.inc -CREATE DATABASE B50653; -USE B50653; -CREATE PROCEDURE b50653_proc() BEGIN SELECT 1; END; -DROP PROCEDURE b50653_proc; -DROP DATABASE B50653; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result deleted file mode 100644 index 50f43ebe5bf..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup0.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows OFF -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -1 -select * from t; -a b -1 3 -2 2 -3 5 -4 3 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result deleted file mode 100644 index 9e7f932a3c9..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc0_lookup1.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -0 -select * from t; -a b -1 3 -2 2 -3 5 -4 3 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result deleted file mode 100644 index 348734b206d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup0.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows OFF -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks ON -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -0 -select * from t; -a b -1 3 -2 2 -3 5 -4 3 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result deleted file mode 100644 index bfd640e52e9..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_pk_uc1_lookup1.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks ON -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, primary key(a)) engine=tokudb; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -0 -select * from t; -a b -1 3 -2 2 -3 5 -4 3 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result deleted file mode 100644 index faf969f851a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup0.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows OFF -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=tokudb; -insert into t values (1,0,-1); -insert into t values (2,0,-2),(3,0,-3); -insert into t values (4,0,-4); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -1 -select * from t; -a b c -1 3 -1 -2 2 -2 -3 5 -3 -4 3 -4 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result deleted file mode 100644 index 9ac87512f80..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_update_unique_uc0_lookup1.result +++ /dev/null @@ -1,37 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_%'; -Variable_name Value -tokudb_rpl_check_readonly ON -tokudb_rpl_lookup_rows ON -tokudb_rpl_lookup_rows_delay 10000 -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=tokudb; -insert into t values (1,0,-1); -insert into t values (2,0,-2),(3,0,-3); -insert into t values (4,0,-4); -include/diff_tables.inc [master:test.t, slave:test.t] -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; -@tend-@tstart <= 5 -0 -select * from t; -a b c -1 3 -1 -2 2 -2 -3 5 -3 -4 3 -4 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk.result deleted file mode 100644 index ea1b84f8138..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk.result +++ /dev/null @@ -1,21 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_unique_checks%'; -Variable_name Value -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk_uc1.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk_uc1.result deleted file mode 100644 index c846ec81612..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_pk_uc1.result +++ /dev/null @@ -1,21 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_unique_checks%'; -Variable_name Value -tokudb_rpl_unique_checks ON -tokudb_rpl_unique_checks_delay 10000 -create table t (a bigint not null, primary key(a)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -0 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique.result deleted file mode 100644 index 808303387d5..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique.result +++ /dev/null @@ -1,21 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_unique_checks%'; -Variable_name Value -tokudb_rpl_unique_checks OFF -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1,2); -insert into t values (2,3),(3,4); -insert into t values (4,5); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -1 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique_uc1.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique_uc1.result deleted file mode 100644 index a40548cec62..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_tokudb_write_unique_uc1.result +++ /dev/null @@ -1,21 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -drop table if exists t; -show variables like 'tokudb_rpl_unique_checks%'; -Variable_name Value -tokudb_rpl_unique_checks ON -tokudb_rpl_unique_checks_delay 5000 -create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=tokudb; -select unix_timestamp() into @tstart; -insert into t values (1,2); -insert into t values (2,3),(3,4); -insert into t values (4,5); -select unix_timestamp()-@tstart <= 10; -unix_timestamp()-@tstart <= 10 -0 -include/diff_tables.inc [master:test.t, slave:test.t] -drop table if exists t; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_truncate_3tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_truncate_3tokudb.result deleted file mode 100644 index 8c2fec847a9..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_truncate_3tokudb.result +++ /dev/null @@ -1,48 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -include/rpl_reset.inc -**** On Master **** -CREATE TABLE t1 (a INT, b LONG) ENGINE=TokuDB; -INSERT INTO t1 VALUES (1,1), (2,2); -include/sync_slave_sql_with_master.inc -**** On Master **** -TRUNCATE TABLE t1; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -==== Test using a table with delete triggers ==== -**** On Master **** -SET @count := 1; -CREATE TABLE t2 (a INT, b LONG) ENGINE=TokuDB; -CREATE TRIGGER trg1 BEFORE DELETE ON t1 FOR EACH ROW SET @count := @count + 1; -include/sync_slave_sql_with_master.inc -**** On Master **** -TRUNCATE TABLE t1; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t2, slave:t2] -DROP TABLE t1,t2; -include/sync_slave_sql_with_master.inc -include/rpl_reset.inc -**** On Master **** -CREATE TABLE t1 (a INT, b LONG) ENGINE=TokuDB; -INSERT INTO t1 VALUES (1,1), (2,2); -include/sync_slave_sql_with_master.inc -**** On Master **** -DELETE FROM t1; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t1, slave:t1] -==== Test using a table with delete triggers ==== -**** On Master **** -SET @count := 1; -CREATE TABLE t2 (a INT, b LONG) ENGINE=TokuDB; -CREATE TRIGGER trg1 BEFORE DELETE ON t1 FOR EACH ROW SET @count := @count + 1; -include/sync_slave_sql_with_master.inc -**** On Master **** -DELETE FROM t1; -include/sync_slave_sql_with_master.inc -include/diff_tables.inc [master:t2, slave:t2] -DROP TABLE t1,t2; -include/sync_slave_sql_with_master.inc -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_typeconv_tokudb.result b/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_typeconv_tokudb.result deleted file mode 100644 index 426c5dbeb3f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/rpl_typeconv_tokudb.result +++ /dev/null @@ -1,13 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = ''; -CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=TokuDB; -INSERT INTO t1 VALUES (b'0', b'01', b'101'); -include/diff_tables.inc [master:t1, slave:t1] -DROP TABLE t1; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/r/tokudb_innodb_xa_crash.result b/storage/tokudb/mysql-test/tokudb_rpl/r/tokudb_innodb_xa_crash.result deleted file mode 100644 index add5e6b9529..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/r/tokudb_innodb_xa_crash.result +++ /dev/null @@ -1,16 +0,0 @@ -include/master-slave.inc -Warnings: -Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. -Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. -[connection master] -CREATE TABLE t1(`a` INT) ENGINE=TokuDB; -CREATE TABLE t2(`a` INT) ENGINE=InnoDB; -begin; -insert into t1 values (1); -insert into t2 values (1); -commit; -TABLES t1 and t2 must be equal otherwise an error will be thrown. -include/diff_tables.inc [master:test.t1, slave:test.t1] -include/diff_tables.inc [master:test.t2, slave:test.t2] -drop table t1,t2; -include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/disabled.def b/storage/tokudb/mysql-test/tokudb_rpl/t/disabled.def deleted file mode 100644 index 30bc9fea7c5..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/disabled.def +++ /dev/null @@ -1 +0,0 @@ -rpl_row_sp002_tokudb : tokudb does not support foreign keys diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb-slave.opt deleted file mode 100644 index 3819e7c3f7b..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb_lock_wait_timeout=4 --slave-transaction-retries=2 --max-relay-log-size=4096 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb.test deleted file mode 100644 index 86d28a12ad3..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_deadlock_tokudb.test +++ /dev/null @@ -1,8 +0,0 @@ --- source include/not_ndb_default.inc --- source include/have_tokudb.inc --- source include/not_mts_slave_parallel_workers.inc --- source include/not_relay_log_info_table.inc --- source include/not_master_info_table.inc - -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_deadlock.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_master_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_master_tokudb.test deleted file mode 100644 index 4ee8fd38010..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_master_tokudb.test +++ /dev/null @@ -1,11 +0,0 @@ -############################################################# -# Purpose: To test having extra columns on the master WL#3915 -############################################################# --- source include/have_binlog_format_row.inc --- source include/master-slave.inc --- source include/have_tokudb.inc - -let $engine_type=TokuDB; ---source extra/rpl_tests/rpl_extra_col_master.test - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_slave_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_slave_tokudb.test deleted file mode 100644 index b3d157a513d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_extra_col_slave_tokudb.test +++ /dev/null @@ -1,7 +0,0 @@ --- source include/have_binlog_format_row.inc --- source include/have_tokudb.inc --- source include/master-slave.inc - -let $engine_type='TokuDB'; --- source extra/rpl_tests/rpl_extra_col_slave.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_mixed_row_tokudb-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_mixed_row_tokudb-master.opt deleted file mode 100644 index 96f0ce3f36c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_mixed_row_tokudb-master.opt +++ /dev/null @@ -1 +0,0 @@ ---default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test deleted file mode 100644 index 53cf555ce64..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_not_null_tokudb.test +++ /dev/null @@ -1,20 +0,0 @@ -################################################################################# -# This test checks if the replication between "null" fields to either "null" -# fields or "not null" fields works properly. In the first case, the execution -# should work fine. In the second case, it may fail according to the sql_mode -# being used. -# -# The test is devided in three main parts: -# -# 1 - NULL --> NULL (no failures) -# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures) -# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) -# -################################################################################# ---source include/have_tokudb.inc ---source include/have_binlog_format_row.inc ---source include/master-slave.inc - -let $engine=TokuDB; ---source extra/rpl_tests/rpl_not_null.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-master.opt deleted file mode 100644 index 4426a9c9746..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-master.opt +++ /dev/null @@ -1 +0,0 @@ ---log-warnings=0 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-slave.opt deleted file mode 100644 index b351df53683..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb-slave.opt +++ /dev/null @@ -1,5 +0,0 @@ ---log-warnings=0 --slave-transaction-retries=0 - - - - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb.test deleted file mode 100644 index 23d2d6cdf51..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb.test +++ /dev/null @@ -1,16 +0,0 @@ ---source include/have_tokudb.inc -#Want to skip this test from daily Valgrind execution ---source include/no_valgrind_without_big.inc -# -# WL#5569 MTS -# -# The test is similar to rpl_parallel (see further instruction there) but -# checks and provides benchmarking data with load to innodb tables. -# - ---source include/master-slave.inc - -connection master; -source extra/rpl_tests/rpl_parallel_load_tokudb.test; - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt deleted file mode 100644 index 042156e63d1..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk-slave.opt +++ /dev/null @@ -1,2 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF --slave-parallel-workers=2 - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk.test deleted file mode 100644 index bedeb9513be..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_delete_pk.test +++ /dev/null @@ -1,63 +0,0 @@ -# test replicated delete rows log events on a table with a primary key. -# the slave is read only with tokudb rpl row lookups OFF. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -delete from t where a=2; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt deleted file mode 100644 index fffefff5bcd..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF --slave-parallel-workers=2 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test deleted file mode 100644 index 6dd9b660eed..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_update_pk_uc0_lookup0.test +++ /dev/null @@ -1,70 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk-slave.opt deleted file mode 100644 index f2ed0286136..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk-slave.opt +++ /dev/null @@ -1,2 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF --slave-parallel-workers=2 - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk.test deleted file mode 100644 index 0ed12b34e1f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_parallel_tokudb_write_pk.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_unique_checks%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb-master.opt deleted file mode 100644 index 0eed7aaadad..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb-master.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb.test deleted file mode 100644 index a80363cc91d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_partition_tokudb.test +++ /dev/null @@ -1,12 +0,0 @@ -# Test of partitioning features with replication for InnoDB ---source include/have_tokudb.inc ---source include/have_partition.inc ---source include/master-slave.inc - -# Set the default connection to 'master' - -let $engine_type=TokuDB; - ---source suite/rpl/include/rpl_partition.inc - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_relay_space_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_relay_space_tokudb.test deleted file mode 100644 index 232ec944c16..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_relay_space_tokudb.test +++ /dev/null @@ -1,4 +0,0 @@ --- source include/not_ndb_default.inc --- source include/have_tokudb.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_sv_relay_space.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt deleted file mode 100644 index c87bbb62418..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=true --loose-tokudb-rpl-unique-checks=false --loose-tokudb-rpl-lookup-rows=false diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence.test deleted file mode 100644 index 67e77c1511c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_rfr_disable_on_expl_pk_absence.test +++ /dev/null @@ -1,48 +0,0 @@ -# Test case for bug#1536663 -# -# When read-free-replication is enabled for tokudb and there is no explicit -# pk for replicated table there can be dublicated records in the table on -# update operation. -# -# Consider this update operation: -# UPDATE t SET a = a + 10 WHERE b = 'b'; -# The master does rows lookup and updates the rows which values correspond to -# the condition. The update events are written to binary log with -# rows values from the master. As rows lookup is forbidden for slave -# the new rows are added instead of updating corresponding rows. -# -# Without the fix there will be several rows with b = 'b' in the table on slave -# instead of one updated row. -# - ---source include/have_tokudb.inc ---source include/have_binlog_format_row.inc ---source include/master-slave.inc - -call mtr.add_suppression("read free replication is disabled for tokudb table"); - ---connection master -CREATE TABLE t (a int(11), b char(20)) ENGINE = TokuDB; -INSERT INTO t (a, b) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'); - ---sync_slave_with_master ---sorted_result -SELECT * FROM t; - ---let $i = 2 ---while($i) { - --dec $i - --connection master - UPDATE t SET a = a + 10 WHERE b = 'b'; - --sorted_result - SELECT * FROM t; - --sync_slave_with_master - --sorted_result - SELECT * FROM t; -} - ---connection master -DROP TABLE t; ---sync_slave_with_master - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test deleted file mode 100644 index 4c38646b112..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_basic_3tokudb.test +++ /dev/null @@ -1,11 +0,0 @@ ---source include/have_tokudb.inc ---source include/have_binlog_format_row.inc ---source include/master-slave.inc - -connection slave; -let $bit_field_special = ALL_LOSSY; -let $type = 'TokuDB'; -let $extra_index = ; ---source extra/rpl_tests/rpl_row_basic.test - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_blob_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_blob_tokudb.test deleted file mode 100644 index b96219a0c50..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_blob_tokudb.test +++ /dev/null @@ -1,15 +0,0 @@ -################################# -# Wrapper for rpl_row_blob.test# -################################# -######################################################## -# By JBM 2005-02-15 Wrapped to allow reuse of test code# -# Added to skip if ndb is default # -######################################################## --- source include/not_ndb_default.inc --- source include/have_tokudb.inc --- source include/have_binlog_format_row.inc --- source include/master-slave.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_row_blob.test - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb-master.opt deleted file mode 100644 index 773ec62bef2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb-master.opt +++ /dev/null @@ -1,2 +0,0 @@ ---skip-external-locking ---default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb.test deleted file mode 100644 index bc624d4d89c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_log_tokudb.test +++ /dev/null @@ -1,15 +0,0 @@ -################################### -# Wrapper for rpl_row_log.test # -# Added wrapper so that MyISAM & # -# Innodb and NDB could all use the# -# Same test. NDB produced a diff # -# bin-log # -################################### --- source include/not_ndb_default.inc --- source include/have_binlog_format_row.inc --- source include/have_tokudb.inc --- source include/master-slave.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_log.test - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_rec_comp_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_rec_comp_tokudb.test deleted file mode 100644 index 8d84de1df7d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_rec_comp_tokudb.test +++ /dev/null @@ -1,11 +0,0 @@ --- source include/have_binlog_format_row.inc --- source include/master-slave.inc --- source include/have_tokudb.inc - -# -# BUG#52868 Wrong handling of NULL value during update, replication out of sync -# - --- let $engine= TokuDB --- source extra/rpl_tests/rpl_record_compare.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp002_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp002_tokudb.test deleted file mode 100644 index 82c1e17f488..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp002_tokudb.test +++ /dev/null @@ -1,4 +0,0 @@ --- source include/not_ndb_default.inc --- source include/have_tokudb.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_row_sp002.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp007_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp007_tokudb.test deleted file mode 100644 index 6deaa68d23e..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_sp007_tokudb.test +++ /dev/null @@ -1,4 +0,0 @@ --- source include/not_ndb_default.inc --- source include/have_tokudb.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_row_sp007.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_tabledefs_3tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_tabledefs_3tokudb.test deleted file mode 100644 index e4558d0e87a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_row_tabledefs_3tokudb.test +++ /dev/null @@ -1,10 +0,0 @@ - --- source include/have_binlog_format_row.inc --- source include/have_tokudb.inc --- source include/master-slave.inc - -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_row_tabledefs.test - - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_set_null_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_set_null_tokudb.test deleted file mode 100644 index 78ae341b29f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_set_null_tokudb.test +++ /dev/null @@ -1,7 +0,0 @@ --- source include/have_binlog_format_mixed_or_row.inc --- source include/master-slave.inc --- source include/have_tokudb.inc - --- let $engine= TokuDB --- source extra/rpl_tests/rpl_set_null.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_stm_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_stm_tokudb.test deleted file mode 100644 index 72daaefd3fb..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_stm_tokudb.test +++ /dev/null @@ -1,11 +0,0 @@ -# File for specialities regarding replication from or to InnoDB -# tables. - -source include/master-slave.inc; -source include/have_tokudb.inc; -source include/have_binlog_format_statement.inc; -# gtids disabled because it tests DROP TEMPORARY inside a transaction -source include/not_gtid_enabled.inc; - -source extra/rpl_tests/rpl_tokudb.test; ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb-master.opt deleted file mode 100644 index 0eed7aaadad..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb-master.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-master.opt deleted file mode 100644 index 0eed7aaadad..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-master.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-slave.opt deleted file mode 100644 index 0eed7aaadad..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb_autoinc_lock_mode=0 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430.test deleted file mode 100644 index 4cc7f032db9..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug28430.test +++ /dev/null @@ -1,159 +0,0 @@ -#Want to skip this test from daily Valgrind execution ---source include/no_valgrind_without_big.inc - ---source include/have_tokudb.inc ---source include/have_partition.inc ---source include/have_binlog_format_mixed_or_row.inc ---source include/master-slave.inc - -# Set the default connection to 'master' - ---vertical_results - -let $engine_type=TokuDB; - -######## Creat Table Section ######### -use test; - -eval CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, - dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON - UPDATE CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, - fkid MEDIUMINT, filler VARCHAR(255), - PRIMARY KEY(id)) ENGINE=$engine_type; - -eval CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, - dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE - CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, - fkid MEDIUMINT, filler VARCHAR(255), - PRIMARY KEY(id)) ENGINE=$engine_type - PARTITION BY KEY(id) partitions 5; - -eval CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, - dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE - CURRENT_TIMESTAMP, user CHAR(255), uuidf LONGBLOB, - fkid MEDIUMINT, filler VARCHAR(255), - PRIMARY KEY(id)) ENGINE=$engine_type - PARTITION BY RANGE(id) - SUBPARTITION BY hash(id) subpartitions 2 - (PARTITION pa1 values less than (10), - PARTITION pa2 values less than (20), - PARTITION pa3 values less than (30), - PARTITION pa4 values less than (40), - PARTITION pa5 values less than (50), - PARTITION pa6 values less than (60), - PARTITION pa7 values less than (70), - PARTITION pa8 values less than (80), - PARTITION pa9 values less than (90), - PARTITION pa10 values less than (100), - PARTITION pa11 values less than MAXVALUE); - -######## Create SPs, Functions, Views and Triggers Section ############## - -delimiter |; -CREATE PROCEDURE test.proc_norm() -BEGIN - DECLARE ins_count INT DEFAULT 1000; - DECLARE del_count INT; - DECLARE cur_user VARCHAR(255); - DECLARE local_uuid VARCHAR(255); - DECLARE local_time TIMESTAMP; - - SET local_time= NOW(); - SET cur_user= CURRENT_USER(); - SET local_uuid= UUID(); - - WHILE ins_count > 0 DO - INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), - ins_count,'Going to test MBR for MySQL'); - SET ins_count = ins_count - 1; - END WHILE; - - SELECT MAX(id) FROM test.regular_tbl INTO del_count; - WHILE del_count > 0 DO - DELETE FROM test.regular_tbl WHERE id = del_count; - SET del_count = del_count - 2; - END WHILE; -END| - -CREATE PROCEDURE test.proc_bykey() -BEGIN - DECLARE ins_count INT DEFAULT 1000; - DECLARE del_count INT; - DECLARE cur_user VARCHAR(255); - DECLARE local_uuid VARCHAR(255); - DECLARE local_time TIMESTAMP; - - SET local_time= NOW(); - SET cur_user= CURRENT_USER(); - SET local_uuid= UUID(); - - WHILE ins_count > 0 DO - INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(), - ins_count,'Going to test MBR for MySQL'); - SET ins_count = ins_count - 1; - END WHILE; - - SELECT MAX(id) FROM test.bykey_tbl INTO del_count; - WHILE del_count > 0 DO - DELETE FROM test.bykey_tbl WHERE id = del_count; - SET del_count = del_count - 2; - END WHILE; -END| - -CREATE PROCEDURE test.proc_byrange() -BEGIN - DECLARE ins_count INT DEFAULT 1000; - DECLARE del_count INT; - DECLARE cur_user VARCHAR(255); - DECLARE local_uuid VARCHAR(255); - DECLARE local_time TIMESTAMP; - - SET local_time= NOW(); - SET cur_user = CURRENT_USER(); - SET local_uuid=UUID(); - - WHILE ins_count > 0 DO - INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(), - ins_count,'Going to test MBR for MySQL'); - SET ins_count = ins_count - 1; - END WHILE; - - SELECT MAX(id) FROM test.byrange_tbl INTO del_count; - WHILE del_count > 0 DO - DELETE FROM test.byrange_tbl WHERE id = del_count; - SET del_count = del_count - 2; - END WHILE; -END| - -delimiter ;| - -############ Finish Setup Section ################### - - -############ Test Section ################### - -CALL test.proc_norm(); -SELECT count(*) as "Master regular" FROM test.regular_tbl; -CALL test.proc_bykey(); -SELECT count(*) as "Master bykey" FROM test.bykey_tbl; -CALL test.proc_byrange(); -SELECT count(*) as "Master byrange" FROM test.byrange_tbl; - ---sync_slave_with_master -connection slave; -show create table test.byrange_tbl; -SELECT count(*) "Slave norm" FROM test.regular_tbl; -SELECT count(*) "Slave bykey" FROM test.bykey_tbl; -SELECT count(*) "Slave byrange" FROM test.byrange_tbl; - -###### CLEAN UP SECTION ############## - -connection master; -DROP PROCEDURE test.proc_norm; -DROP PROCEDURE test.proc_bykey; -DROP PROCEDURE test.proc_byrange; -DROP TABLE test.regular_tbl; -DROP TABLE test.bykey_tbl; -DROP TABLE test.byrange_tbl; - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug30888.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug30888.test deleted file mode 100644 index 406e9c2a63a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_bug30888.test +++ /dev/null @@ -1,66 +0,0 @@ ---source include/have_tokudb.inc ---source include/have_binlog_format_mixed_or_row.inc ---source include/master-slave.inc - -# Set the default connection to 'master' - ---vertical_results - -#let $engine_type=TokuDB; -let $engine_type=TokuDB; - -######## Creat Table Section ######### -use test; - -eval CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, - dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB, - fkid MEDIUMINT, filler VARCHAR(255), - PRIMARY KEY(id)) ENGINE=$engine_type; - -######## Create SPs, Functions, Views and Triggers Section ############## - -delimiter |; -CREATE PROCEDURE test.proc_norm() -BEGIN - DECLARE ins_count INT DEFAULT 1000; - DECLARE del_count INT; - DECLARE cur_user VARCHAR(255); - DECLARE local_uuid VARCHAR(255); - DECLARE local_time TIMESTAMP; - - SET local_time= NOW(); - SET cur_user= CURRENT_USER(); - SET local_uuid= UUID(); - - WHILE ins_count > 0 DO - INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(), - ins_count,'Going to test MBR for MySQL'); - SET ins_count = ins_count - 1; - END WHILE; - - SELECT MAX(id) FROM test.regular_tbl INTO del_count; - WHILE del_count > 0 DO - DELETE FROM test.regular_tbl WHERE id = del_count; - SET del_count = del_count - 2; - END WHILE; -END| - -delimiter ;| - -############ Finish Setup Section ################### - - -############ Test Section ################### - -CALL test.proc_norm(); - ---sync_slave_with_master - -###### CLEAN UP SECTION ############## - -connection master; -DROP PROCEDURE test.proc_norm; -DROP TABLE test.regular_tbl; - ---source include/rpl_end.inc - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test deleted file mode 100644 index 783bee20307..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_commit_after_flush.test +++ /dev/null @@ -1,6 +0,0 @@ --- source include/not_ndb_default.inc --- source include/have_tokudb.inc --- source include/master-slave.inc -let $engine_type=tokudb; --- source extra/rpl_tests/rpl_commit_after_flush.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk-slave.opt deleted file mode 100644 index 93a2685e847..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk.test deleted file mode 100644 index bedeb9513be..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk.test +++ /dev/null @@ -1,63 +0,0 @@ -# test replicated delete rows log events on a table with a primary key. -# the slave is read only with tokudb rpl row lookups OFF. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -delete from t where a=2; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt deleted file mode 100644 index 9a2fec628f9..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=0 --loose-tokudb-rpl-unique-checks=ON --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1.test deleted file mode 100644 index 9e9aaede416..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_delete_pk_lookup1.test +++ /dev/null @@ -1,66 +0,0 @@ -# test replicated delete rows log events on a table with a primary key. -# the slave is read only with tokudb rpl row lookups ON. -# this will cause SLOW deletes. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -delete from t where a=2; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart > 5; # assert big delay in the delete time - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt deleted file mode 100644 index d03d176150d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-master.opt +++ /dev/null @@ -1 +0,0 @@ -${?PB_HOST_SPECIFIC_MYSQLD_ARGS} diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt deleted file mode 100644 index d03d176150d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id-slave.opt +++ /dev/null @@ -1 +0,0 @@ -${?PB_HOST_SPECIFIC_MYSQLD_ARGS} diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test deleted file mode 100644 index b14aba2263f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id.test +++ /dev/null @@ -1,7 +0,0 @@ -################################# -# Wrapper for rpl_insert_id.test# -################################# --- source include/not_ndb_default.inc --- source include/have_tokudb.inc -let $engine_type=tokudb; --- source extra/rpl_tests/rpl_insert_id.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test deleted file mode 100644 index f0302114e5a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_insert_id_pk.test +++ /dev/null @@ -1,7 +0,0 @@ -################################# -# Wrapper for rpl_insert_id.test# -################################# --- source include/not_ndb_default.inc --- source include/have_tokudb.inc -let $engine_type=tokudb; --- source extra/rpl_tests/rpl_insert_id_pk.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_ddl.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_ddl.test deleted file mode 100644 index 5614769307d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_ddl.test +++ /dev/null @@ -1,9 +0,0 @@ -######################################### -# Purpose: testing the replication in mixed mode -# Requirements: define binlog format for mysqld as in example below: -# ./mysql-test-run.pl --mysqld=--binlog-format=mixed -######################################### ---source include/have_binlog_format_mixed.inc ---source include/have_tokudb.inc -let $engine_type=TokuDB; ---source suite/rpl/include/rpl_mixed_ddl.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_dml.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_dml.test deleted file mode 100644 index 6147d321784..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_mixed_dml.test +++ /dev/null @@ -1,12 +0,0 @@ -######################################### -# Purpose: testing the replication in mixed mode -# Requirements: define binlog format for mysqld as in example below: -# ./mysql-test-run.pl --mysqld=--binlog-format=mixed -######################################### ---source include/have_binlog_format_mixed.inc ---source include/have_tokudb.inc -let $engine_type=TokuDB; - -SET SESSION tokudb_pk_insert_mode = 2; - ---source suite/rpl/include/rpl_mixed_dml.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test deleted file mode 100644 index 06a760ca2a8..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update.test +++ /dev/null @@ -1,4 +0,0 @@ --- source include/not_ndb_default.inc --- source include/have_tokudb.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_multi_update.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt deleted file mode 100644 index 17d4171af0e..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---replicate-ignore-table=nothing.sensible diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test deleted file mode 100644 index 729895d1bbb..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update2.test +++ /dev/null @@ -1,14 +0,0 @@ -####################################################### -# Wrapper for rpl_multi_update2.test to allow multi # -# Engines to reuse test code. By JBM 2006-02-15 # -# Added comments section and to skip when ndb is # -# Default engine. # -####################################################### ---source include/not_gtid_enabled.inc ---source include/not_ndb_default.inc ---source include/have_tokudb.inc ---source include/master-slave.inc -call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT'); -let $engine_type=TokuDB; ---source extra/rpl_tests/rpl_multi_update2.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test deleted file mode 100644 index 18a906664a0..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_multi_update3.test +++ /dev/null @@ -1,13 +0,0 @@ -####################################################### -# Wrapper for rpl_multi_update3.test to allow multi # -# Engines to reuse test code. By JBM 2006-02-15 # -# Added comments section and to skip when ndb is # -# Default engine. # -####################################################### ---source include/have_tokudb.inc ---source include/not_ndb_default.inc ---source include/master-slave.inc -call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); -let $engine_type=TokuDB; ---source extra/rpl_tests/rpl_multi_update3.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff-slave.opt deleted file mode 100644 index 0240c9d6ae4..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=OFF --loose-tokudb-rpl-check-readonly=OFF --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff.test deleted file mode 100644 index 7b3e8f0c0d3..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ff.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft-slave.opt deleted file mode 100644 index e1ee193d4c1..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=OFF --loose-tokudb-rpl-check-readonly=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft.test deleted file mode 100644 index 7b3e8f0c0d3..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_ft.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf-slave.opt deleted file mode 100644 index e60afd0380a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-check-readonly=OFF --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf.test deleted file mode 100644 index 7b3e8f0c0d3..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tf.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt-slave.opt deleted file mode 100644 index f6658646e65..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-check-readonly=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt.test deleted file mode 100644 index 7b3e8f0c0d3..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_read_only_tt.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table-slave.opt deleted file mode 100644 index 2a7ec2590cc..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table.test deleted file mode 100644 index 319e741e12c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_rfr_partition_table.test +++ /dev/null @@ -1,74 +0,0 @@ -# test tokudb read free replication feature with partition table - ---source include/have_debug.inc ---source include/have_tokudb.inc ---source include/have_binlog_format_row.inc ---source include/master-slave.inc - -call mtr.add_suppression(".*read free replication is disabled for TokuDB table.*continue with rows lookup"); - -connection master; - -# partition table with explicit PK -CREATE TABLE t1 (id int(11) NOT NULL, pid int(11), PRIMARY KEY (id)) ENGINE=TokuDB -PARTITION BY RANGE (id) -(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, - PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, - PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); - -insert into t1 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); - -# partition table without explicit PK -CREATE TABLE t2 (id int(11) NOT NULL, pid int(11), key idx_1(id)) ENGINE=TokuDB -PARTITION BY RANGE (id) -(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB, - PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB, - PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB); - -insert into t2 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13); - ---sync_slave_with_master - -# set tokudb rfr crash/assert conditions if we enter lookup code -# to make sure no unique checks or row lookups is invoked -connection slave; ---source include/stop_slave.inc -let $saved_debug = `select @@debug`; -set global debug= "+d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; ---source include/start_slave.inc - -connection master; -insert into t1 values(21, 21); -delete from t1 where id = 11; -update t1 set pid = 2 where id = 1; - -sync_slave_with_master; - -connection master; - ---let $diff_tables= master:test.t1, slave:test.t1 ---source include/diff_tables.inc - -# print rfr disabled warning in errlog -connection master; -insert into t2 values(21, 21); -delete from t2 where id = 11; -update t2 set pid = 2 where id = 1; - -sync_slave_with_master; - ---let $diff_tables= master:test.t2, slave:test.t2 ---source include/diff_tables.inc - -connection master; -drop table t1; -drop table t2; -sync_slave_with_master; - -connection slave; ---source include/stop_slave.inc -set global debug= "-d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check"; -set global debug= @saved_debug; ---source include/start_slave.inc - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt deleted file mode 100644 index e980c2de7ff..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-master.opt +++ /dev/null @@ -1 +0,0 @@ ---transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt deleted file mode 100644 index 264c5c1a4b4..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1 --transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test deleted file mode 100644 index 6bd79691528..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_crash_safe.test +++ /dev/null @@ -1,19 +0,0 @@ -# This test takes long time, so only run it with the --big-test mtr-flag. ---source include/big_test.inc ---source include/not_embedded.inc ---source include/not_valgrind.inc ---source include/have_debug.inc ---source include/have_tokudb.inc ---source include/have_binlog_format_row.inc ---source include/not_mts_slave_parallel_workers.inc ---source include/master-slave.inc - -call mtr.add_suppression('Attempting backtrace'); -call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); -call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); -call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); - -let $engine_type=TokuDB; -let $database_name=test; ---source extra/rpl_tests/rpl_crash_safe.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test deleted file mode 100644 index a52e96dc19d..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_blobs.test +++ /dev/null @@ -1,53 +0,0 @@ -#Want to skip this test from daily Valgrind execution ---source include/no_valgrind_without_big.inc - --- source include/have_innodb.inc --- source include/have_tokudb.inc -# -# This file contains tests for WL#5096. -# - --- let $rpl_topology= 1->2->3 --- source include/rpl_init.inc --- source include/have_binlog_format_row.inc - -# -# WL#5096 Tests. -# - -# -# Tests combinations of binlog-row-image against mixes of MyISAM and InnoDB -# storage engines on all three servers. -# -# All the combinarions need not to be separated into their own files as -# the tests for indexes and engines mixes are, because noblobs test script -# does not take too long time, thence we do not risk triggering PB2 timeout -# on valgrind runs. -# - -## NOBLOB - --- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - -## MINIMAL - --- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - -## FULL - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img_blobs.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test deleted file mode 100644 index cfbc6519182..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_full.test +++ /dev/null @@ -1,50 +0,0 @@ -#Want to skip this test from daily Valgrind execution --- source include/no_valgrind_without_big.inc -# -# This file contains tests for WL#5096 and bug fixes. -# - --- source include/have_binlog_format_row.inc --- source include/not_gtid_enabled.inc - --- let $rpl_topology= 1->2->3 --- source include/rpl_init.inc - --- connection server_1 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_2 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_3 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_1 - -# -# WL#5096 -# - -# -# Tests for different storage engines on each server, -# but same index structure on tables. The tests are conducted -# using FULL binlog-row-image on all servers. -# - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - -# -# BUG#49100 -# - --- echo ### Testing with TokuDB storage engine - --- let $engine=TokuDB --- source extra/rpl_tests/rpl_row_empty_imgs.test - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test deleted file mode 100644 index 4c832208feb..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_min.test +++ /dev/null @@ -1,42 +0,0 @@ -#Want to skip this test from daily Valgrind execution --- source include/no_valgrind_without_big.inc -# -# This file contains tests for WL#5096 and bug fixes. -# - --- let $rpl_topology= 1->2->3 --- source include/rpl_init.inc --- source include/have_binlog_format_row.inc - --- connection server_1 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_2 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_3 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_1 - -# -# WL#5096 -# - -# -# Tests for different storage engines on each server, -# but same index structure on tables. The tests are conducted -# using MINIMAL binlog-row-image on all servers. -# - --- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test deleted file mode 100644 index 00b6448ad72..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_eng_noblob.test +++ /dev/null @@ -1,42 +0,0 @@ -#Want to skip this test from daily Valgrind execution --- source include/no_valgrind_without_big.inc -# -# This file contains tests for WL#5096 and bug fixes. -# - --- let $rpl_topology= 1->2->3 --- source include/rpl_init.inc --- source include/have_binlog_format_row.inc - --- connection server_1 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_2 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_3 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_1 - -# -# WL#5096 -# - -# -# Tests for different storage engines on each server, -# but same index structure on tables. The tests are conducted -# using NOBLOB binlog-row-image on all servers. -# - --- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test deleted file mode 100644 index 6f683776c3c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_full.test +++ /dev/null @@ -1,38 +0,0 @@ -#Want to skip this test from daily Valgrind execution --- source include/no_valgrind_without_big.inc -# -# This file contains tests for WL#5096. -# - --- let $rpl_topology= 1->2->3 --- source include/rpl_init.inc --- source include/have_binlog_format_row.inc - --- connection server_1 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_2 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_3 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_1 - -# -# WL#5096 Tests. -# - -# -# Tests FULL image against a mix of MyISAM and InnoDB engines on -# each of the three servers. -# - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test deleted file mode 100644 index 030bc655291..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_min.test +++ /dev/null @@ -1,41 +0,0 @@ -#Want to skip this test from daily Valgrind execution ---source include/no_valgrind_without_big.inc -# -# This file contains tests for WL#5096. -# - ---let $rpl_topology= 1->2->3 ---source include/rpl_init.inc --- source include/have_binlog_format_row.inc - --- connection server_1 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_2 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_3 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_1 - -# -# WL#5096 Tests. -# - -# -# Tests MINIMAL image against a mix of MyISAM and InnoDB engines on -# each of the three servers. -# - --- let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test deleted file mode 100644 index 785f79bccdc..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_img_idx_noblob.test +++ /dev/null @@ -1,41 +0,0 @@ -#Want to skip this test from daily Valgrind execution --- source include/no_valgrind_without_big.inc -# -# This file contains tests for WL#5096. -# - --- let $rpl_topology= 1->2->3 --- source include/rpl_init.inc --- source include/have_binlog_format_row.inc - --- connection server_1 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_2 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_3 --- source include/have_innodb.inc --- source include/have_tokudb.inc --- connection server_1 - -# -# WL#5096 -# - -# -# Tests NOBLOB image against a mix of MyISAM and InnoDB engines on -# each of the three servers. -# - --- let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y --- source include/rpl_row_img_set.inc - --- let $row_img_test_script= extra/rpl_tests/rpl_row_img_diff_indexes.test --- source suite/tokudb.rpl/include/rpl_tokudb_row_img_general_loop.inc - --- let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y --- source include/rpl_row_img_set.inc - - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt deleted file mode 100644 index 773ec62bef2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log-master.opt +++ /dev/null @@ -1,2 +0,0 @@ ---skip-external-locking ---default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test deleted file mode 100644 index bc624d4d89c..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_log.test +++ /dev/null @@ -1,15 +0,0 @@ -################################### -# Wrapper for rpl_row_log.test # -# Added wrapper so that MyISAM & # -# Innodb and NDB could all use the# -# Same test. NDB produced a diff # -# bin-log # -################################### --- source include/not_ndb_default.inc --- source include/have_binlog_format_row.inc --- source include/have_tokudb.inc --- source include/master-slave.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_log.test - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt deleted file mode 100644 index 8be29bbe976..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---replicate-do-db=bug_37656 --replicate-ignore-table=bug_37656.t1 --replicate-do-table=bug_37656.t2 --replicate-do-table=bug_37656.t3 --lower-case-table-names=1 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test deleted file mode 100644 index 56599f3c1ad..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_lower_case_table_names.test +++ /dev/null @@ -1,14 +0,0 @@ -# BUG#37656 -# -# For details look into extra/rpl_tests/rpl_lower_case_table_names.test -# - --- source include/not_gtid_enabled.inc --- source include/have_tokudb.inc --- source include/not_windows.inc --- source include/have_binlog_format_row.inc --- source include/master-slave.inc - --- let $engine=TokuDB --- source extra/rpl_tests/rpl_lower_case_table_names.test --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test deleted file mode 100644 index 38ea65061fe..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp003.test +++ /dev/null @@ -1,14 +0,0 @@ -################################# -# Wrapper for rpl_row_sp003.test# -################################# -######################################################## -# By JBM 2005-02-15 Wrapped to allow reuse of test code# -# Added to skip if ndb is default # -######################################################## --- source include/not_ndb_default.inc --- source include/have_tokudb.inc --- source include/have_binlog_format_row.inc --- source include/master-slave.inc -let $engine_type=TOKUDB; --- source extra/rpl_tests/rpl_row_sp003.test --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test deleted file mode 100644 index 41eececc198..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_sp006.test +++ /dev/null @@ -1,14 +0,0 @@ -################################# -# Wrapper for rpl_row_sp006.test# -################################# -######################################################## -# By JBM 2005-02-15 Wrapped to allow reuse of test code# -# Added to skip if ndb is default # -######################################################## --- source include/not_ndb_default.inc --- source include/have_tokudb.inc --- source include/have_binlog_format_row.inc --- source include/master-slave.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_row_sp006.test --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test deleted file mode 100644 index ad4ea1a2a57..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_row_trig004.test +++ /dev/null @@ -1,19 +0,0 @@ -############################################################################# -# Original Author: JBM # -# Original Date: Oct/18/2005 # -############################################################################# -# TEST: Use before insert triggers and has the second insert fail # -############################################################################# -# Change by JBM 2006-02-14 added to skip when NDB default engine # -# This test has been wrapped to allow multipal engines to use same code # -############################################################################# - -# Includes --- source include/not_ndb_default.inc --- source include/have_binlog_format_row.inc --- source include/have_tokudb.inc --- source include/master-slave.inc -let $engine_type=TOKUDB; --- source extra/rpl_tests/rpl_trig004.test - --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt deleted file mode 100644 index 773ec62bef2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log-master.opt +++ /dev/null @@ -1,2 +0,0 @@ ---skip-external-locking ---default-storage-engine=MyISAM diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test deleted file mode 100644 index 42eb4961dce..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_log.test +++ /dev/null @@ -1,15 +0,0 @@ -################################### -# Wrapper for rpl_row_log.test # -# Added wrapper so that MyISAM & # -# Innodb and NDB could all use the# -# Same test. NDB produced a diff # -# bin-log # -################################### --- source include/not_ndb_default.inc --- source include/have_binlog_format_statement.inc --- source include/have_tokudb.inc --- source include/master-slave.inc -let $engine_type=TokuDB; --- source extra/rpl_tests/rpl_log.test - ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt deleted file mode 100644 index e980c2de7ff..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-master.opt +++ /dev/null @@ -1 +0,0 @@ ---transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt deleted file mode 100644 index 264c5c1a4b4..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---skip-slave-start --relay-log-info-repository=TABLE --relay-log-recovery=1 --transaction_isolation=READ-COMMITTED diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test deleted file mode 100644 index 724550fae4a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_crash_safe.test +++ /dev/null @@ -1,18 +0,0 @@ ---source include/big_test.inc ---source include/not_embedded.inc ---source include/not_valgrind.inc ---source include/have_debug.inc ---source include/have_tokudb.inc ---source include/have_binlog_format_mixed_or_statement.inc ---source include/not_mts_slave_parallel_workers.inc ---source include/master-slave.inc - -call mtr.add_suppression('Attempting backtrace'); -call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); -call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); -call mtr.add_suppression(".* InnoDB: Warning: allocated tablespace .*, old maximum was .*"); - -let $engine_type=TokuDB; -let $database_name=test; ---source extra/rpl_tests/rpl_crash_safe.test ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt deleted file mode 100644 index 8be29bbe976..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---replicate-do-db=bug_37656 --replicate-ignore-table=bug_37656.t1 --replicate-do-table=bug_37656.t2 --replicate-do-table=bug_37656.t3 --lower-case-table-names=1 diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test deleted file mode 100644 index 2a7e690f27a..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_stm_mixed_lower_case_table_names.test +++ /dev/null @@ -1,14 +0,0 @@ -# BUG#37656 -# -# For details look into extra/rpl_tests/rpl_lower_case_table_names.test -# - --- source include/not_gtid_enabled.inc --- source include/have_tokudb.inc --- source include/not_windows.inc --- source include/have_binlog_format_mixed_or_statement.inc --- source include/master-slave.inc - --- let $engine=TokuDB --- source extra/rpl_tests/rpl_lower_case_table_names.test --- source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt deleted file mode 100644 index 93a2685e847..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test deleted file mode 100644 index 6dd9b660eed..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup0.test +++ /dev/null @@ -1,70 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt deleted file mode 100644 index a4ca1104425..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test deleted file mode 100644 index 6dd9b660eed..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc0_lookup1.test +++ /dev/null @@ -1,70 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt deleted file mode 100644 index 4b1d21daf5f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=ON --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test deleted file mode 100644 index 6dd9b660eed..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup0.test +++ /dev/null @@ -1,70 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt deleted file mode 100644 index 239e19ac040..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=ON --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test deleted file mode 100644 index 6dd9b660eed..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_pk_uc1_lookup1.test +++ /dev/null @@ -1,70 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a)) engine=$engine; -# show create table t; -insert into t values (1,0); -insert into t values (2,0),(3,0); -insert into t values (4,0); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt deleted file mode 100644 index 93a2685e847..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test deleted file mode 100644 index 93fef3699d9..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup0.test +++ /dev/null @@ -1,70 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=$engine; -# show create table t; -insert into t values (1,0,-1); -insert into t values (2,0,-2),(3,0,-3); -insert into t values (4,0,-4); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt deleted file mode 100644 index a4ca1104425..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows-delay=10000 --loose-tokudb-rpl-lookup-rows=ON diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test deleted file mode 100644 index c8976db8ccd..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_update_unique_uc0_lookup1.test +++ /dev/null @@ -1,69 +0,0 @@ -# test replicated update rows log events on a table with a primary key. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, c bigint not null, primary key(a), unique key(c)) engine=$engine; -# show create table t; -insert into t values (1,0,-1); -insert into t values (2,0,-2),(3,0,-3); -insert into t values (4,0,-4); - -# wait for the inserts to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# delete a row -connection master; -update t set b=b+1 where a=2; -update t set b=b+2 where a=1; -update t set b=b+3 where a=4; -update t set b=b+4 where a=3; -update t set b=b+1 where 1<=a and a<=3; -select unix_timestamp() into @tstart; - -# wait for the delete to finish on the slave -connection master; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; -connection master; -select unix_timestamp() into @tend; -select @tend-@tstart <= 5; # assert no delay in the delete time - -connection slave; -select * from t; - -# diff tables ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk-slave.opt deleted file mode 100644 index 19b40f86454..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk.test deleted file mode 100644 index 0ed12b34e1f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_unique_checks%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1-slave.opt deleted file mode 100644 index 646a9991753..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=10000 --loose-tokudb-rpl-unique-checks=ON diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1.test deleted file mode 100644 index 0ed12b34e1f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_pk_uc1.test +++ /dev/null @@ -1,53 +0,0 @@ -# test replicated write rows log events on a table with a primary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_unique_checks%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, primary key(a)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1); -insert into t values (2),(3); -insert into t values (4); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# insert into t values (5); # test read-only -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique-slave.opt deleted file mode 100644 index 19b40f86454..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=OFF diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique.test deleted file mode 100644 index fc4c9597dac..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique.test +++ /dev/null @@ -1,52 +0,0 @@ -# test replicated write rows log events on a table with a primary key and a unique secondary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_unique_checks%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1,2); -insert into t values (2,3),(3,4); -insert into t values (4,5); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1-slave.opt deleted file mode 100644 index 9139a370e57..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---read-only=ON --loose-tokudb-rpl-unique-checks-delay=5000 --loose-tokudb-rpl-unique-checks=ON diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1.test deleted file mode 100644 index fc4c9597dac..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_tokudb_write_unique_uc1.test +++ /dev/null @@ -1,52 +0,0 @@ -# test replicated write rows log events on a table with a primary key and a unique secondary key. -# the slave is read only with tokudb unique checks disabled. - -source include/have_tokudb.inc; -let $engine=tokudb; -source include/have_binlog_format_row.inc; -source include/master-slave.inc; - -# initialize -connection master; -disable_warnings; -drop table if exists t; -enable_warnings; - -connection slave; -# show variables like 'read_only'; -show variables like 'tokudb_rpl_unique_checks%'; - -# insert some rows -connection master; -# select @@binlog_format; -# select @@autocommit; -eval create table t (a bigint not null, b bigint not null, primary key(a), unique key(b)) engine=$engine; -# show create table t; -select unix_timestamp() into @tstart; -insert into t values (1,2); -insert into t values (2,3),(3,4); -insert into t values (4,5); - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -connection master; -select unix_timestamp()-@tstart <= 10; - -connection slave; -# show create table t; - -# diff tables -connection master; ---let $diff_tables= master:test.t, slave:test.t -source include/diff_tables.inc; - -# cleanup -connection master; -drop table if exists t; - -sync_slave_with_master; -# source include/sync_slave_sql_with_master.inc; - -source include/rpl_end.inc; - diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_truncate_3tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_truncate_3tokudb.test deleted file mode 100644 index 8c2cf7ca4ba..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_truncate_3tokudb.test +++ /dev/null @@ -1,4 +0,0 @@ ---source include/have_tokudb.inc ---source include/not_ndb_default.inc -let $engine=TokuDB; ---source extra/rpl_tests/rpl_truncate.test diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_typeconv_tokudb.test b/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_typeconv_tokudb.test deleted file mode 100644 index 0f73e60f278..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/rpl_typeconv_tokudb.test +++ /dev/null @@ -1,26 +0,0 @@ ---source include/have_binlog_format_row.inc ---source include/have_tokudb.inc ---source include/master-slave.inc - -# -# BUG#49618: Field length stored incorrectly in binary log for InnoDB -# - -connection slave; -SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS; -SET GLOBAL SLAVE_TYPE_CONVERSIONS = ''; - -connection master; -CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=TokuDB; -INSERT INTO t1 VALUES (b'0', b'01', b'101'); -sync_slave_with_master; - -let $diff_tables= master:t1, slave:t1; -source include/diff_tables.inc; - -connection master; -DROP TABLE t1; -sync_slave_with_master; - -SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; ---source include/rpl_end.inc diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/suite.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/suite.opt deleted file mode 100644 index 15acdf7397f..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/suite.opt +++ /dev/null @@ -1 +0,0 @@ -$TOKUDB_OPT $TOKUDB_LOAD_ADD --loose-tokudb-check-jemalloc=0 --loose-tokudb-cache-size=512M --loose-tokudb-block-size=1M diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash-slave.opt b/storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash-slave.opt deleted file mode 100644 index 978dfbc809e..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---log-slave-updates=0 \ No newline at end of file diff --git a/storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash.test b/storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash.test deleted file mode 100644 index 97818a597e2..00000000000 --- a/storage/tokudb/mysql-test/tokudb_rpl/t/tokudb_innodb_xa_crash.test +++ /dev/null @@ -1,25 +0,0 @@ ---source include/master-slave.inc ---source include/have_tokudb.inc ---source include/have_innodb.inc - -eval CREATE TABLE t1(`a` INT) ENGINE=TokuDB; -eval CREATE TABLE t2(`a` INT) ENGINE=InnoDB; - -connection master; -begin; -insert into t1 values (1); -insert into t2 values (1); -commit; - -sync_slave_with_master; - ---echo TABLES t1 and t2 must be equal otherwise an error will be thrown. -let $diff_tables= master:test.t1, slave:test.t1; -source include/diff_tables.inc; - -let $diff_tables= master:test.t2, slave:test.t2; -source include/diff_tables.inc; - -connection master; -drop table t1,t2; ---source include/rpl_end.inc -- cgit v1.2.1 From d85d6c9c416aab85f1ded344a5b870d4cc56f9f6 Mon Sep 17 00:00:00 2001 From: Elena Stepanova Date: Fri, 4 Aug 2017 02:11:10 +0300 Subject: Remove extra trailing spaces from the result file --- storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'storage') diff --git a/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result b/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result index fce77f1647d..92aefedac69 100644 --- a/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result +++ b/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev12972.result @@ -1,10 +1,10 @@ CREATE TABLE t1 (pk INT PRIMARY KEY, i1 INT, c1 VARCHAR(1), KEY(c1)) ENGINE=TokuDB; -INSERT INTO t1 VALUES +INSERT INTO t1 VALUES (1,2,NULL),(2,5,'x'),(3,3,'i'),(4,1,'e'),(5,4,'p'); CREATE TABLE t2 (i2 INT) ENGINE=TokuDB; INSERT INTO t2 VALUES (1),(2); CREATE TABLE t3 (i3 INT, c3 VARCHAR(1), KEY(i3)) ENGINE=TokuDB; -INSERT INTO t3 VALUES +INSERT INTO t3 VALUES (1,'e'),(1,'z'),(1,'i'),(1,'q'),(1,'i'),(1,'f'),(1,'m'),(2,'c'),(1,'d'), (2,'n'),(1,'t'),(2,'e'),(1,'w'),(2,'y'),(1,'j'),(2,'i'),(1,'f'),(2,'f'), (1,'s'),(2,'y'); -- cgit v1.2.1 From d2a19082c03485c69157c7b1e040f2806eb2e153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Fri, 4 Aug 2017 04:27:33 +0300 Subject: Disable rpl_tokudb_row_img_* tests We need to pull rpl config files from MySQL before these tests can be run. --- storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test | 1 + storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test | 1 + storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test | 1 + storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test | 1 + storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test | 1 + storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test | 1 + storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf | 1 - storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test | 1 + 14 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf delete mode 100644 storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf (limited to 'storage') diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test index a52e96dc19d..ff4a0435a5e 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_blobs.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; --source include/no_valgrind_without_big.inc -- source include/have_innodb.inc diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test index cfbc6519182..68ff71752ac 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_full.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; -- source include/no_valgrind_without_big.inc # # This file contains tests for WL#5096 and bug fixes. diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test index 4c832208feb..3ba958fc691 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_min.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; -- source include/no_valgrind_without_big.inc # # This file contains tests for WL#5096 and bug fixes. diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test index 00b6448ad72..f539e3ac370 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_eng_noblob.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; -- source include/no_valgrind_without_big.inc # # This file contains tests for WL#5096 and bug fixes. diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test index 6f683776c3c..9dfd1675f53 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_full.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; -- source include/no_valgrind_without_big.inc # # This file contains tests for WL#5096. diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test index 030bc655291..03e022940a6 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_min.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; --source include/no_valgrind_without_big.inc # # This file contains tests for WL#5096. diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf deleted file mode 100644 index d758d29f481..00000000000 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.cnf +++ /dev/null @@ -1 +0,0 @@ -!include suite/rpl/t/rpl_row_img.cnf diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test index 785f79bccdc..ed147c8902b 100644 --- a/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test +++ b/storage/tokudb/mysql-test/rpl/t/rpl_tokudb_row_img_idx_noblob.test @@ -1,4 +1,5 @@ #Want to skip this test from daily Valgrind execution +skip Require rpl files from MySQL; -- source include/no_valgrind_without_big.inc # # This file contains tests for WL#5096. -- cgit v1.2.1 From 2ef7a5a13a988842450cbeeaceaf0ea1a78a3c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Fri, 4 Aug 2017 13:11:05 +0300 Subject: MDEV-13443: Port innochecksum tests from 10.2 innodb_zip suite to 10.1 This is basically port of WL6045:Improve Innochecksum with some code refactoring on innochecksum. Added page0size.h include from 10.2 to make 10.1 vrs 10.2 innochecksum as identical as possible. Added page 0 checksum checking and if that fails whole test fails. --- storage/innobase/buf/buf0buf.cc | 54 +++++----- storage/innobase/include/page0size.h | 200 +++++++++++++++++++++++++++++++++++ storage/innobase/include/univ.i | 8 +- storage/innobase/page/page0zip.cc | 8 +- 4 files changed, 236 insertions(+), 34 deletions(-) create mode 100644 storage/innobase/include/page0size.h (limited to 'storage') diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index 50d067b3f85..85d7485678e 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -571,10 +571,10 @@ buf_page_is_checksum_valid_crc32( #ifdef UNIV_INNOCHECKSUM if (log_file && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - fprintf(log_file, "page::%lu;" + fprintf(log_file, "page::%llu;" " crc32 calculated = %u;" - " recorded checksum field1 = %lu recorded" - " checksum field2 =%lu\n", cur_page_num, + " recorded checksum field1 = " ULINTPF " recorded" + " checksum field2 =" ULINTPF "\n", cur_page_num, crc32, checksum_field1, checksum_field2); } #endif /* UNIV_INNOCHECKSUM */ @@ -619,28 +619,28 @@ buf_page_is_checksum_valid_innodb( #ifdef UNIV_INNOCHECKSUM if (log_file && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_INNODB) { - fprintf(log_file, "page::%lu;" + fprintf(log_file, "page::%llu;" " old style: calculated =" - " %lu; recorded = %lu\n", + " " ULINTPF "; recorded = " ULINTPF "\n", cur_page_num, old_checksum, checksum_field2); - fprintf(log_file, "page::%lu;" + fprintf(log_file, "page::%llu;" " new style: calculated =" - " %lu; crc32 = %u; recorded = %lu\n", + " " ULINTPF "; crc32 = %u; recorded = " ULINTPF "\n", cur_page_num, new_checksum, buf_calc_page_crc32(read_buf), checksum_field1); } if (log_file && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - fprintf(log_file, "page::%lu;" + fprintf(log_file, "page::%llu;" " old style: calculated =" - " %lu; recorded checksum = %lu\n", + " " ULINTPF "; recorded checksum = " ULINTPF "\n", cur_page_num, old_checksum, checksum_field2); - fprintf(log_file, "page::%lu;" + fprintf(log_file, "page::%llu;" " new style: calculated =" - " %lu; recorded checksum = %lu\n", + " " ULINTPF "; recorded checksum = " ULINTPF "\n", cur_page_num, new_checksum, checksum_field1); } @@ -701,9 +701,9 @@ buf_page_is_checksum_valid_none( if (log_file && srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_STRICT_NONE) { fprintf(log_file, - "page::%lu; none checksum: calculated" - " = %lu; recorded checksum_field1 = %lu" - " recorded checksum_field2 = %lu\n", + "page::%llu; none checksum: calculated" + " = " ULINTPF "; recorded checksum_field1 = " ULINTPF + " recorded checksum_field2 = " ULINTPF "\n", cur_page_num, BUF_NO_CHECKSUM_MAGIC, checksum_field1, checksum_field2); } @@ -765,7 +765,7 @@ buf_page_is_corrupted( of page do not match */ #ifndef UNIV_INNOCHECKSUM ib_logf(IB_LOG_LEVEL_INFO, - "Log sequence number at the start %lu and the end %lu do not match.", + "Log sequence number at the start " ULINTPF " and the end " ULINTPF " do not match.", mach_read_from_4(read_buf + FIL_PAGE_LSN + 4), mach_read_from_4(read_buf + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM + 4)); #endif /* UNIV_INNOCHECKSUM */ @@ -786,7 +786,7 @@ buf_page_is_corrupted( ut_print_timestamp(stderr); fprintf(stderr, - " InnoDB: Error: page %lu log sequence number" + " InnoDB: Error: page " ULINTPF " log sequence number" " " LSN_PF "\n" "InnoDB: is in the future! Current system " "log sequence number " LSN_PF ".\n" @@ -876,13 +876,13 @@ buf_page_is_corrupted( #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "page::" ULINTPF ";" + fprintf(log_file, "page::%llu;" " old style: calculated = " ULINTPF ";" " recorded = " ULINTPF "\n", cur_page_num, buf_calc_page_old_checksum(read_buf), checksum_field2); - fprintf(log_file, "page::" ULINTPF ";" + fprintf(log_file, "page::%llu;" " new style: calculated = " ULINTPF ";" " crc32 = %u; recorded = " ULINTPF "\n", cur_page_num, @@ -912,7 +912,7 @@ buf_page_is_corrupted( #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "Fail; page " ULINTPF + fprintf(log_file, "Fail; page::%llu;" " invalid (fails crc32 checksum)\n", cur_page_num); } @@ -940,12 +940,12 @@ buf_page_is_corrupted( } #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "page::" ULINTPF ";" + fprintf(log_file, "page::%llu;" " old style: calculated = " ULINTPF ";" " recorded = " ULINTPF "\n", cur_page_num, buf_calc_page_old_checksum(read_buf), checksum_field2); - fprintf(log_file, "page::" ULINTPF ";" + fprintf(log_file, "page::%llu;" " new style: calculated = " ULINTPF ";" " crc32 = %u; recorded = " ULINTPF "\n", cur_page_num, @@ -975,7 +975,7 @@ buf_page_is_corrupted( #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "Fail; page " ULINTPF + fprintf(log_file, "Fail; page::%llu;" " invalid (fails innodb checksum)\n", cur_page_num); } @@ -1014,7 +1014,7 @@ buf_page_is_corrupted( #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "Fail; page " ULINTPF + fprintf(log_file, "Fail; page::%llu;" " invalid (fails none checksum)\n", cur_page_num); } @@ -1060,7 +1060,7 @@ buf_page_print( if (!(flags & BUF_PAGE_PRINT_NO_FULL)) { ut_print_timestamp(stderr); fprintf(stderr, - " InnoDB: Page dump in ascii and hex (%lu bytes):\n", + " InnoDB: Page dump in ascii and hex (" ULINTPF " bytes):\n", size); ut_print_buf(stderr, read_buf, size); fputs("\nInnoDB: End of page dump\n", stderr); @@ -1116,7 +1116,7 @@ buf_page_print( "low 4 bytes of LSN at page end " ULINTPF ", " "page number (if stored to page already) " ULINTPF ", " "space id (if created with >= MySQL-4.1.1 " - "and stored already) %lu\n", + "and stored already) " ULINTPF "\n", mach_read_from_4(read_buf + FIL_PAGE_SPACE_OR_CHKSUM), buf_checksum_algorithm_name(SRV_CHECKSUM_ALGORITHM_CRC32), buf_calc_page_crc32(read_buf), @@ -2853,8 +2853,8 @@ buf_block_align_instance( if (block->page.space != space || block->page.offset != offset) { ib_logf(IB_LOG_LEVEL_ERROR, - "Corruption: Block space_id %lu != page space_id %lu or " - "Block offset %lu != page offset %lu", + "Corruption: Block space_id " ULINTPF " != page space_id " ULINTPF " or " + "Block offset " ULINTPF " != page offset " ULINTPF " ", (ulint)block->page.space, space, (ulint)block->page.offset, offset); } diff --git a/storage/innobase/include/page0size.h b/storage/innobase/include/page0size.h new file mode 100644 index 00000000000..b1e1254bfc5 --- /dev/null +++ b/storage/innobase/include/page0size.h @@ -0,0 +1,200 @@ +/***************************************************************************** + +Copyright (c) 2013, 2015, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2017, MariaDB Corporation. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + +*****************************************************************************/ + +/**************************************************//** +@file include/page0size.h +A class describing a page size. + +Created Nov 14, 2013 Vasil Dimov +*******************************************************/ + +#ifndef page0size_t +#define page0size_t + +#include "univ.i" +#include "fsp0types.h" + +#define FIELD_REF_SIZE 20 + +/** A BLOB field reference full of zero, for use in assertions and +tests.Initially, BLOB field references are set to zero, in +dtuple_convert_big_rec(). */ +extern const byte field_ref_zero[FIELD_REF_SIZE]; + +#define PAGE_SIZE_T_SIZE_BITS 17 + +/** Page size descriptor. Contains the physical and logical page size, as well +as whether the page is compressed or not. */ +class page_size_t { +public: + /** Constructor from (physical, logical, is_compressed). + @param[in] physical physical (on-disk/zipped) page size + @param[in] logical logical (in-memory/unzipped) page size + @param[in] is_compressed whether the page is compressed */ + page_size_t(ulint physical, ulint logical, bool is_compressed) + { + if (physical == 0) { + physical = UNIV_PAGE_SIZE_ORIG; + } + if (logical == 0) { + logical = UNIV_PAGE_SIZE_ORIG; + } + + m_physical = static_cast(physical); + m_logical = static_cast(logical); + m_is_compressed = static_cast(is_compressed); + + ut_ad(physical <= (1 << PAGE_SIZE_T_SIZE_BITS)); + ut_ad(logical <= (1 << PAGE_SIZE_T_SIZE_BITS)); + + ut_ad(ut_is_2pow(physical)); + ut_ad(ut_is_2pow(logical)); + + ut_ad(logical <= UNIV_PAGE_SIZE_MAX); + ut_ad(logical >= physical); + ut_ad(!is_compressed || physical <= UNIV_ZIP_SIZE_MAX); + } + + /** Constructor from (fsp_flags). + @param[in] fsp_flags filespace flags */ + explicit page_size_t(ulint fsp_flags) + { + ulint ssize = FSP_FLAGS_GET_PAGE_SSIZE(fsp_flags); + + /* If the logical page size is zero in fsp_flags, then use the + legacy 16k page size. */ + ssize = (0 == ssize) ? UNIV_PAGE_SSIZE_ORIG : ssize; + + /* Convert from a 'log2 minus 9' to a page size in bytes. */ + const unsigned size = ((UNIV_ZIP_SIZE_MIN >> 1) << ssize); + + ut_ad(size <= UNIV_PAGE_SIZE_MAX); + ut_ad(size <= (1 << PAGE_SIZE_T_SIZE_BITS)); + + m_logical = size; + + ssize = FSP_FLAGS_GET_ZIP_SSIZE(fsp_flags); + + /* If the fsp_flags have zero in the zip_ssize field, then it means + that the tablespace does not have compressed pages and the physical + page size is the same as the logical page size. */ + if (ssize == 0) { + m_is_compressed = false; + m_physical = m_logical; + } else { + m_is_compressed = true; + + /* Convert from a 'log2 minus 9' to a page size + in bytes. */ + const unsigned phy + = ((UNIV_ZIP_SIZE_MIN >> 1) << ssize); + + ut_ad(phy <= UNIV_ZIP_SIZE_MAX); + ut_ad(phy <= (1 << PAGE_SIZE_T_SIZE_BITS)); + + m_physical = phy; + } + } + + /** Retrieve the physical page size (on-disk). + @return physical page size in bytes */ + inline ulint physical() const + { + ut_ad(m_physical > 0); + + return(m_physical); + } + + /** Retrieve the logical page size (in-memory). + @return logical page size in bytes */ + inline ulint logical() const + { + ut_ad(m_logical > 0); + return(m_logical); + } + + /** Check whether the page is compressed on disk. + @return true if compressed */ + inline bool is_compressed() const + { + return(m_is_compressed); + } + + /** Copy the values from a given page_size_t object. + @param[in] src page size object whose values to fetch */ + inline void copy_from(const page_size_t& src) + { + *this = src; + } + + /** Check if a given page_size_t object is equal to the current one. + @param[in] a page_size_t object to compare + @return true if equal */ + inline bool equals_to(const page_size_t& a) const + { + return(a.physical() == m_physical + && a.logical() == m_logical + && a.is_compressed() == m_is_compressed); + } + +private: + + /* For non compressed tablespaces, physical page size is equal to + the logical page size and the data is stored in buf_page_t::frame + (and is also always equal to univ_page_size (--innodb-page-size=)). + + For compressed tablespaces, physical page size is the compressed + page size as stored on disk and in buf_page_t::zip::data. The logical + page size is the uncompressed page size in memory - the size of + buf_page_t::frame (currently also always equal to univ_page_size + (--innodb-page-size=)). */ + + /** Physical page size. */ + unsigned m_physical:PAGE_SIZE_T_SIZE_BITS; + + /** Logical page size. */ + unsigned m_logical:PAGE_SIZE_T_SIZE_BITS; + + /** Flag designating whether the physical page is compressed, which is + true IFF the whole tablespace where the page belongs is compressed. */ + unsigned m_is_compressed:1; +}; + +#ifndef UNIV_INNOCHECKSUM +/* Overloading the global output operator to conveniently print an object +of type the page_size_t. +@param[in,out] out the output stream +@param[in] obj an object of type page_size_t to be printed +@retval the output stream */ +inline +std::ostream& +operator<<( + std::ostream& out, + const page_size_t& obj) +{ + out << "[page size: physical=" << obj.physical() + << ", logical=" << obj.logical() + << ", compressed=" << obj.is_compressed() << "]"; + return(out); +} +#endif + +extern page_size_t univ_page_size; + +#endif /* page0size_t */ diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index aafb84db6f1..755b10ba65a 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -371,6 +371,8 @@ and 2 bits for flags. This limits the uncompressed page size to 16k. #define UNIV_PAGE_SIZE_SHIFT_DEF 14 /** Original 16k InnoDB Page Size Shift, in case the default changes */ #define UNIV_PAGE_SIZE_SHIFT_ORIG 14 +/** Original 16k InnoDB Page Size as an ssize (log2 - 9) */ +#define UNIV_PAGE_SSIZE_ORIG (UNIV_PAGE_SIZE_SHIFT_ORIG - 9) /** Minimum page size InnoDB currently supports. */ #define UNIV_PAGE_SIZE_MIN (1 << UNIV_PAGE_SIZE_SHIFT_MIN) @@ -483,9 +485,9 @@ typedef unsigned long long int ullint; #endif /* UNIV_HOTBACKUP */ #ifdef UNIV_INNOCHECKSUM -extern bool strict_verify; -extern FILE* log_file; -extern ulint cur_page_num; +extern bool strict_verify; +extern FILE* log_file; +extern unsigned long long cur_page_num; #endif /* UNIV_INNOCHECKSUM */ #ifndef __WIN__ diff --git a/storage/innobase/page/page0zip.cc b/storage/innobase/page/page0zip.cc index 6e26f830fe6..b580ba6d098 100644 --- a/storage/innobase/page/page0zip.cc +++ b/storage/innobase/page/page0zip.cc @@ -4950,7 +4950,7 @@ page_zip_verify_checksum( } #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "Page::%lu is empty and" + fprintf(log_file, "Page::%llu is empty and" " uncorrupted\n", cur_page_num); } #endif /* UNIV_INNOCHECKSUM */ @@ -4970,7 +4970,7 @@ page_zip_verify_checksum( #ifdef UNIV_INNOCHECKSUM if (log_file) { - fprintf(log_file, "page::%lu;" + fprintf(log_file, "page::%llu;" " %s checksum: calculated = %u;" " recorded = %u\n", cur_page_num, buf_checksum_algorithm_name( @@ -4985,10 +4985,10 @@ page_zip_verify_checksum( data, size, SRV_CHECKSUM_ALGORITHM_CRC32); if (log_file) { - fprintf(log_file, "page::%lu: crc32 checksum:" + fprintf(log_file, "page::%llu: crc32 checksum:" " calculated = %u; recorded = %u\n", cur_page_num, crc32, stored); - fprintf(log_file, "page::%lu: none checksum:" + fprintf(log_file, "page::%llu: none checksum:" " calculated = %lu; recorded = %u\n", cur_page_num, BUF_NO_CHECKSUM_MAGIC, stored); } -- cgit v1.2.1 From fa1f214cf82ae3be9b61dc3879b4e4d05058be8f Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 8 Aug 2017 19:47:34 +0200 Subject: MDEV-12725 select on federated table crashes server NET can only store current_thd if this NET (or its MYSQL) is not moved between threads. In FederatedX MYSQL is part of the TABLE, and a TABLE can migrate between threads. Fix: associate NET with THD in txn->acquire() , and dissociate in txn->release() --- storage/federatedx/federatedx_io_mysql.cc | 5 ++++ storage/federatedx/federatedx_txn.cc | 8 ++++-- storage/federatedx/ha_federatedx.cc | 46 ++++++++++++++++--------------- storage/federatedx/ha_federatedx.h | 3 +- 4 files changed, 37 insertions(+), 25 deletions(-) (limited to 'storage') diff --git a/storage/federatedx/federatedx_io_mysql.cc b/storage/federatedx/federatedx_io_mysql.cc index 8f027e1b5e0..54059c0ecff 100644 --- a/storage/federatedx/federatedx_io_mysql.cc +++ b/storage/federatedx/federatedx_io_mysql.cc @@ -120,6 +120,7 @@ public: void *ref); virtual int seek_position(FEDERATEDX_IO_RESULT **io_result, const void *ref); + virtual void set_thd(void *thd); }; @@ -648,3 +649,7 @@ int federatedx_io_mysql::seek_position(FEDERATEDX_IO_RESULT **io_result, return 0; } +void federatedx_io_mysql::set_thd(void *thd) +{ + mysql.net.thd= thd; +} diff --git a/storage/federatedx/federatedx_txn.cc b/storage/federatedx/federatedx_txn.cc index 232ac335dfc..220896cc2a4 100644 --- a/storage/federatedx/federatedx_txn.cc +++ b/storage/federatedx/federatedx_txn.cc @@ -93,8 +93,8 @@ void federatedx_txn::close(FEDERATEDX_SERVER *server) } -int federatedx_txn::acquire(FEDERATEDX_SHARE *share, bool readonly, - federatedx_io **ioptr) +int federatedx_txn::acquire(FEDERATEDX_SHARE *share, void *thd, + bool readonly, federatedx_io **ioptr) { federatedx_io *io; FEDERATEDX_SERVER *server= share->s; @@ -131,6 +131,7 @@ int federatedx_txn::acquire(FEDERATEDX_SHARE *share, bool readonly, io->busy= TRUE; io->owner_ptr= ioptr; + io->set_thd(thd); } DBUG_ASSERT(io->busy && io->server == server); @@ -157,7 +158,10 @@ void federatedx_txn::release(federatedx_io **ioptr) io->active, io->is_autocommit())); if (io->is_autocommit()) + { + io->set_thd(NULL); io->active= FALSE; + } } release_scan(); diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index 0a24fe9c910..6c918575315 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -1764,7 +1764,7 @@ int ha_federatedx::open(const char *name, int mode, uint test_if_locked) txn= get_txn(thd); - if ((error= txn->acquire(share, TRUE, &io))) + if ((error= txn->acquire(share, thd, TRUE, &io))) { free_share(txn, share); DBUG_RETURN(error); @@ -2049,7 +2049,7 @@ int ha_federatedx::write_row(uchar *buf) /* we always want to append this, even if there aren't any fields */ values_string.append(STRING_WITH_LEN(") ")); - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, ha_thd(), FALSE, &io))) DBUG_RETURN(error); if (use_bulk_insert) @@ -2138,7 +2138,7 @@ void ha_federatedx::start_bulk_insert(ha_rows rows, uint flags) Make sure we have an open connection so that we know the maximum packet size. */ - if (txn->acquire(share, FALSE, &io)) + if (txn->acquire(share, ha_thd(), FALSE, &io)) DBUG_VOID_RETURN; page_size= (uint) my_getpagesize(); @@ -2169,7 +2169,7 @@ int ha_federatedx::end_bulk_insert() if (bulk_insert.str && bulk_insert.length && !table_will_be_deleted) { - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, ha_thd(), FALSE, &io))) DBUG_RETURN(error); if (io->query(bulk_insert.str, bulk_insert.length)) error= stash_remote_error(); @@ -2221,7 +2221,7 @@ int ha_federatedx::optimize(THD* thd, HA_CHECK_OPT* check_opt) DBUG_ASSERT(txn == get_txn(thd)); - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, thd, FALSE, &io))) DBUG_RETURN(error); if (io->query(query.ptr(), query.length())) @@ -2253,7 +2253,7 @@ int ha_federatedx::repair(THD* thd, HA_CHECK_OPT* check_opt) DBUG_ASSERT(txn == get_txn(thd)); - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, thd, FALSE, &io))) DBUG_RETURN(error); if (io->query(query.ptr(), query.length())) @@ -2412,7 +2412,7 @@ int ha_federatedx::update_row(const uchar *old_data, uchar *new_data) if (!has_a_primary_key) update_string.append(STRING_WITH_LEN(" LIMIT 1")); - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, ha_thd(), FALSE, &io))) DBUG_RETURN(error); if (io->query(update_string.ptr(), update_string.length())) @@ -2490,7 +2490,7 @@ int ha_federatedx::delete_row(const uchar *buf) DBUG_PRINT("info", ("Delete sql: %s", delete_string.c_ptr_quick())); - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, ha_thd(), FALSE, &io))) DBUG_RETURN(error); if (io->query(delete_string.ptr(), delete_string.length())) @@ -2599,7 +2599,7 @@ int ha_federatedx::index_read_idx_with_result_set(uchar *buf, uint index, NULL, 0, 0); sql_query.append(index_string); - if ((retval= txn->acquire(share, TRUE, &io))) + if ((retval= txn->acquire(share, ha_thd(), TRUE, &io))) DBUG_RETURN(retval); if (io->query(sql_query.ptr(), sql_query.length())) @@ -2679,7 +2679,7 @@ int ha_federatedx::read_range_first(const key_range *start_key, &table->key_info[active_index], start_key, end_key, 0, eq_range_arg); - if ((retval= txn->acquire(share, TRUE, &io))) + if ((retval= txn->acquire(share, ha_thd(), TRUE, &io))) DBUG_RETURN(retval); if (stored_result) @@ -2779,7 +2779,7 @@ int ha_federatedx::rnd_init(bool scan) { int error; - if ((error= txn->acquire(share, TRUE, &io))) + if ((error= txn->acquire(share, ha_thd(), TRUE, &io))) DBUG_RETURN(error); if (stored_result) @@ -2826,7 +2826,7 @@ int ha_federatedx::free_result() else { federatedx_io *tmp_io= 0, **iop; - if (!*(iop= &io) && (error= txn->acquire(share, TRUE, (iop= &tmp_io)))) + if (!*(iop= &io) && (error= txn->acquire(share, ha_thd(), TRUE, (iop= &tmp_io)))) { DBUG_ASSERT(0); // Fail when testing insert_dynamic(&results, (uchar*) &stored_result); @@ -2906,7 +2906,7 @@ int ha_federatedx::read_next(uchar *buf, FEDERATEDX_IO_RESULT *result) FEDERATEDX_IO_ROW *row; DBUG_ENTER("ha_federatedx::read_next"); - if ((retval= txn->acquire(share, TRUE, &io))) + if ((retval= txn->acquire(share, ha_thd(), TRUE, &io))) DBUG_RETURN(retval); /* Fetch a row, insert it back in a row format. */ @@ -2951,7 +2951,7 @@ void ha_federatedx::position(const uchar *record __attribute__ ((unused))) DBUG_VOID_RETURN; } - if (txn->acquire(share, TRUE, &io)) + if (txn->acquire(share, ha_thd(), TRUE, &io)) DBUG_VOID_RETURN; io->mark_position(stored_result, ref); @@ -2980,7 +2980,7 @@ int ha_federatedx::rnd_pos(uchar *buf, uchar *pos) /* We have to move this to 'ref' to get things aligned */ bmove(ref, pos, ref_length); - if ((retval= txn->acquire(share, TRUE, &io))) + if ((retval= txn->acquire(share, ha_thd(), TRUE, &io))) goto error; if ((retval= io->seek_position(&result, ref))) @@ -3054,7 +3054,7 @@ int ha_federatedx::info(uint flag) /* we want not to show table status if not needed to do so */ if (flag & (HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO)) { - if (!*(iop= &io) && (error_code= tmp_txn->acquire(share, TRUE, (iop= &tmp_io)))) + if (!*(iop= &io) && (error_code= tmp_txn->acquire(share, thd, TRUE, (iop= &tmp_io)))) goto fail; } @@ -3155,6 +3155,7 @@ int ha_federatedx::extra(ha_extra_function operation) int ha_federatedx::reset(void) { + THD *thd= ha_thd(); int error = 0; insert_dup_update= FALSE; @@ -3172,9 +3173,9 @@ int ha_federatedx::reset(void) federatedx_io *tmp_io= 0, **iop; // external_lock may not have been called so txn may not be set - tmp_txn= get_txn(ha_thd()); + tmp_txn= get_txn(thd); - if (!*(iop= &io) && (error= tmp_txn->acquire(share, TRUE, (iop= &tmp_io)))) + if (!*(iop= &io) && (error= tmp_txn->acquire(share, thd, TRUE, (iop= &tmp_io)))) { DBUG_ASSERT(0); // Fail when testing return error; @@ -3208,6 +3209,7 @@ int ha_federatedx::reset(void) int ha_federatedx::delete_all_rows() { + THD *thd= ha_thd(); char query_buffer[FEDERATEDX_QUERY_BUFFER_SIZE]; String query(query_buffer, sizeof(query_buffer), &my_charset_bin); int error; @@ -3221,14 +3223,14 @@ int ha_federatedx::delete_all_rows() ident_quote_char); /* no need for savepoint in autocommit mode */ - if (!(ha_thd()->variables.option_bits & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))) + if (!(thd->variables.option_bits & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))) txn->stmt_autocommit(); /* TRUNCATE won't return anything in mysql_affected_rows */ - if ((error= txn->acquire(share, FALSE, &io))) + if ((error= txn->acquire(share, thd, FALSE, &io))) DBUG_RETURN(error); if (io->query(query.ptr(), query.length())) @@ -3373,7 +3375,7 @@ int ha_federatedx::create(const char *name, TABLE *table_arg, if (tmp_share.s) { tmp_txn= get_txn(thd); - if (!(retval= tmp_txn->acquire(&tmp_share, TRUE, &tmp_io))) + if (!(retval= tmp_txn->acquire(&tmp_share, thd, TRUE, &tmp_io))) { retval= test_connection(thd, tmp_io, &tmp_share); tmp_txn->release(&tmp_io); @@ -3470,7 +3472,7 @@ int ha_federatedx::external_lock(MYSQL_THD thd, int lock_type) { table_will_be_deleted = FALSE; txn= get_txn(thd); - if (!(error= txn->acquire(share, lock_type == F_RDLCK, &io)) && + if (!(error= txn->acquire(share, ha_thd(), lock_type == F_RDLCK, &io)) && (lock_type == F_WRLCK || !io->is_autocommit())) { if (!thd_test_options(thd, (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))) diff --git a/storage/federatedx/ha_federatedx.h b/storage/federatedx/ha_federatedx.h index f8531014ee4..abf25abe0c5 100644 --- a/storage/federatedx/ha_federatedx.h +++ b/storage/federatedx/ha_federatedx.h @@ -215,6 +215,7 @@ public: void *ref)=0; virtual int seek_position(FEDERATEDX_IO_RESULT **io_result, const void *ref)=0; + virtual void set_thd(void *thd) { } }; @@ -233,7 +234,7 @@ public: bool has_connections() const { return txn_list != NULL; } bool in_transaction() const { return savepoint_next != 0; } - int acquire(FEDERATEDX_SHARE *share, bool readonly, federatedx_io **io); + int acquire(FEDERATEDX_SHARE *share, void *thd, bool readonly, federatedx_io **io); void release(federatedx_io **io); void close(FEDERATEDX_SERVER *); -- cgit v1.2.1 From cb9648a6b5041ca928e8da2d2571ba9df6d80e8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 9 Aug 2017 14:29:22 +0300 Subject: Revert an InnoDB Memcached plugin fix that was merged from MySQL 5.6.37 Revert the following change, because Memcached is not present in MariaDB Server. We had better avoid adding dead code. commit d9bc5e03d788b958ce8c76e157239953db60adb2 Author: Aakanksha Verma Date: Thu May 18 14:31:01 2017 +0530 Bug #24605783 MYSQL GOT SIGNAL 6 ASSERTION FAILURE --- storage/innobase/api/api0api.cc | 21 ++++----------------- storage/innobase/include/row0mysql.h | 7 +------ storage/innobase/row/row0sel.cc | 15 ++------------- 3 files changed, 7 insertions(+), 36 deletions(-) (limited to 'storage') diff --git a/storage/innobase/api/api0api.cc b/storage/innobase/api/api0api.cc index 711714861ab..739ea9f7572 100644 --- a/storage/innobase/api/api0api.cc +++ b/storage/innobase/api/api0api.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2008, 2017, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2008, 2015, 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 @@ -1988,14 +1988,11 @@ ib_cursor_read_row( page_format = static_cast( dict_table_is_comp(tuple->index->table)); - rec = btr_pcur_get_rec(pcur); - if (!rec_get_deleted_flag(rec, page_format)) { - if (prebuilt->innodb_api && - prebuilt->innodb_api_rec != NULL) { - rec =prebuilt->innodb_api_rec; - } + if (prebuilt->innodb_api_rec && + prebuilt->innodb_api_rec != rec) { + rec = prebuilt->innodb_api_rec; } if (!rec_get_deleted_flag(rec, page_format)) { @@ -2032,10 +2029,6 @@ ib_cursor_position( buf = static_cast(mem_alloc(UNIV_PAGE_SIZE)); - if (prebuilt->innodb_api) { - prebuilt->cursor_heap = cursor->heap; - } - /* We want to position at one of the ends, row_search_for_mysql() uses the search_tuple fields to work out what to do. */ dtuple_set_n_fields(prebuilt->search_tuple, 0); @@ -2090,9 +2083,6 @@ ib_cursor_next( row_prebuilt_t* prebuilt = cursor->prebuilt; byte buf[UNIV_PAGE_SIZE_MAX]; - if (prebuilt->innodb_api) { - prebuilt->cursor_heap = cursor->heap; - } /* We want to move to the next record */ dtuple_set_n_fields(prebuilt->search_tuple, 0); @@ -2145,9 +2135,6 @@ ib_cursor_moveto( buf = static_cast(mem_alloc(UNIV_PAGE_SIZE)); - if (prebuilt->innodb_api) { - prebuilt->cursor_heap = cursor->heap; - } err = static_cast(row_search_for_mysql( buf, ib_srch_mode, prebuilt, cursor->match_mode, 0)); diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index 043417333ab..f5f159fc414 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2000, 2016, 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 @@ -724,8 +724,6 @@ struct row_prebuilt_t { mem_heap_t* heap; /*!< memory heap from which these auxiliary structures are allocated when needed */ - mem_heap_t* cursor_heap; /*!< memory heap from which - innodb_api_buf is allocated per session*/ ins_node_t* ins_node; /*!< Innobase SQL insert node used to perform inserts to the table */ @@ -876,9 +874,6 @@ struct row_prebuilt_t { unsigned innodb_api:1; /*!< whether this is a InnoDB API query */ const rec_t* innodb_api_rec; /*!< InnoDB API search result */ - void* innodb_api_buf; /*!< Buffer holding copy of the physical - Innodb API search record */ - ulint innodb_api_rec_size; /*!< Size of the Innodb API record */ byte* srch_key_val1; /*!< buffer used in converting search key values from MySQL format to InnoDB format.*/ diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index 505de35840f..5978a1e3491 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -4997,19 +4997,8 @@ idx_cond_failed: btr_pcur_store_position(pcur, &mtr); - if (prebuilt->innodb_api - && (btr_pcur_get_rec(pcur) != result_rec)) { - ulint rec_size = rec_offs_size(offsets); - if (!prebuilt->innodb_api_rec_size || - (prebuilt->innodb_api_rec_size < rec_size)) { - prebuilt->innodb_api_buf = - static_cast - (mem_heap_alloc(prebuilt->cursor_heap,rec_size)); - prebuilt->innodb_api_rec_size = rec_size; - } - prebuilt->innodb_api_rec = - rec_copy( - prebuilt->innodb_api_buf, result_rec, offsets); + if (prebuilt->innodb_api) { + prebuilt->innodb_api_rec = result_rec; } } -- cgit v1.2.1 From fc556a8d94130f30d9c0545f2146fb49166d310c Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 10 Aug 2017 12:03:48 +0200 Subject: compilation fix for SLES 11 SP4 --- storage/xtradb/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'storage') diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt index 0c28775630b..d99b7cfe114 100644 --- a/storage/xtradb/CMakeLists.txt +++ b/storage/xtradb/CMakeLists.txt @@ -81,9 +81,9 @@ CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU) IF(NOT MSVC) # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not - # workaround for gcc 4.1.2 RHEL5/x86, gcc atomic ops only work under -march=i686 + # workaround for old gcc on x86, gcc atomic ops only work under -march=i686 IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND CMAKE_COMPILER_IS_GNUCC AND - CMAKE_C_COMPILER_VERSION VERSION_LESS "4.1.3") + CMAKE_C_COMPILER_VERSION VERSION_LESS "4.4.0") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686") ENDIF() -- cgit v1.2.1 From 7581fb23e2d8126378296e987d84641d7bbd8914 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 14 Aug 2017 18:37:53 +0200 Subject: compilation fix for SLES 11 SP4 also fix innodb --- storage/innobase/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'storage') diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index df60ba0d16f..dfa3b36f39e 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -75,9 +75,9 @@ CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU) IF(NOT MSVC) # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not - # workaround for gcc 4.1.2 RHEL5/x86, gcc atomic ops only work under -march=i686 + # workaround for old gcc on x86, gcc atomic ops only work under -march=i686 IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND CMAKE_COMPILER_IS_GNUCC AND - CMAKE_C_COMPILER_VERSION VERSION_LESS "4.1.3") + CMAKE_C_COMPILER_VERSION VERSION_LESS "4.4.0") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686") ENDIF() -- cgit v1.2.1