diff options
104 files changed, 459 insertions, 162 deletions
diff --git a/cmake/CMakeLis.txt b/cmake/CMakeLis.txt deleted file mode 100644 index e69de29bb2d..00000000000 --- a/cmake/CMakeLis.txt +++ /dev/null diff --git a/cmake/systemd.cmake b/cmake/systemd.cmake index 6986cb748ce..f7365066ef6 100644 --- a/cmake/systemd.cmake +++ b/cmake/systemd.cmake @@ -13,11 +13,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -INCLUDE(FindPkgConfig) -# http://www.cmake.org/cmake/help/v3.0/module/FindPkgConfig.html - MACRO(CHECK_SYSTEMD) IF(UNIX) + INCLUDE(FindPkgConfig) + # http://www.cmake.org/cmake/help/v3.0/module/FindPkgConfig.html SET(WITH_SYSTEMD "auto" CACHE STRING "Enable systemd scripts and notification support") IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto") IF(PKG_CONFIG_FOUND) diff --git a/mysql-test/extra/rpl_tests/rpl_cant_read_event_incident.inc b/mysql-test/extra/rpl_tests/rpl_cant_read_event_incident.inc index a9534a999e2..7dfef023947 100644 --- a/mysql-test/extra/rpl_tests/rpl_cant_read_event_incident.inc +++ b/mysql-test/extra/rpl_tests/rpl_cant_read_event_incident.inc @@ -18,8 +18,8 @@ # and replication is started from it. # ---source include/master-slave.inc --source include/have_binlog_format_mixed.inc +--source include/master-slave.inc --connection slave # Make sure the slave is stopped while we are messing with master. diff --git a/mysql-test/extra/rpl_tests/rpl_checksum.inc b/mysql-test/extra/rpl_tests/rpl_checksum.inc index 28d16658a7c..b5e70abe4d0 100644 --- a/mysql-test/extra/rpl_tests/rpl_checksum.inc +++ b/mysql-test/extra/rpl_tests/rpl_checksum.inc @@ -7,9 +7,9 @@ # WL2540 replication events checksum # Testing configuration parameters ---source include/master-slave.inc --source include/have_debug.inc --source include/have_binlog_format_mixed.inc +--source include/master-slave.inc call mtr.add_suppression('Slave can not handle replication events with the checksum that master is configured to log'); call mtr.add_suppression('Replication event checksum verification failed'); diff --git a/mysql-test/extra/rpl_tests/rpl_init_slave_errors.inc b/mysql-test/extra/rpl_tests/rpl_init_slave_errors.inc index a8ac4e3cd6e..4fdea651edd 100644 --- a/mysql-test/extra/rpl_tests/rpl_init_slave_errors.inc +++ b/mysql-test/extra/rpl_tests/rpl_init_slave_errors.inc @@ -35,8 +35,8 @@ # Configuring the Environment ###################################################################### source include/have_debug.inc; -source include/master-slave.inc; source include/have_log_bin.inc; +source include/master-slave.inc; connection slave; diff --git a/mysql-test/extra/rpl_tests/rpl_loaddata.test b/mysql-test/extra/rpl_tests/rpl_loaddata.test index e1942dad239..f0933c1023f 100644 --- a/mysql-test/extra/rpl_tests/rpl_loaddata.test +++ b/mysql-test/extra/rpl_tests/rpl_loaddata.test @@ -11,8 +11,8 @@ # check if START SLAVE, RESET SLAVE, CHANGE MASTER reset Last_slave_error and # Last_slave_errno in SHOW SLAVE STATUS (1st and 3rd commands did not: bug 986) --- source include/master-slave.inc source include/have_innodb.inc; +source include/master-slave.inc; --disable_query_log CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/extra/rpl_tests/rpl_packet.inc b/mysql-test/extra/rpl_tests/rpl_packet.inc index 41bb374b802..cbde486bcbb 100644 --- a/mysql-test/extra/rpl_tests/rpl_packet.inc +++ b/mysql-test/extra/rpl_tests/rpl_packet.inc @@ -15,8 +15,9 @@ # BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET # max-out size db name -source include/master-slave.inc; source include/have_binlog_format_row.inc; +source include/master-slave.inc; + call mtr.add_suppression("Slave I/O: Got a packet bigger than 'slave_max_allowed_packet' bytes, .*error.* 1153"); call mtr.add_suppression("Log entry on master is longer than slave_max_allowed_packet"); let $db= DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________; diff --git a/mysql-test/extra/rpl_tests/rpl_skip_replication.inc b/mysql-test/extra/rpl_tests/rpl_skip_replication.inc index 14e3339ff5e..ac0beef414d 100644 --- a/mysql-test/extra/rpl_tests/rpl_skip_replication.inc +++ b/mysql-test/extra/rpl_tests/rpl_skip_replication.inc @@ -16,8 +16,8 @@ # so if it is needed, it should be set explicitly before each call. # ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc connection slave; # Test that SUPER is required to change @@replicate_events_marked_for_skip. diff --git a/mysql-test/extra/rpl_tests/rpl_stm_relay_ign_space.inc b/mysql-test/extra/rpl_tests/rpl_stm_relay_ign_space.inc index 82c4b1881bf..41339f539f8 100644 --- a/mysql-test/extra/rpl_tests/rpl_stm_relay_ign_space.inc +++ b/mysql-test/extra/rpl_tests/rpl_stm_relay_ign_space.inc @@ -25,8 +25,8 @@ # IO thread does not do it in an uncontrolled manner. --source include/have_binlog_format_statement.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --disable_query_log CREATE TABLE t1 (c1 TEXT) engine=InnoDB; diff --git a/mysql-test/extra/rpl_tests/rpl_sync.inc b/mysql-test/extra/rpl_tests/rpl_sync.inc index ede3c3c515f..1e2ec2ca83b 100644 --- a/mysql-test/extra/rpl_tests/rpl_sync.inc +++ b/mysql-test/extra/rpl_tests/rpl_sync.inc @@ -32,12 +32,12 @@ # Configuring the environment ######################################################################################## --echo =====Configuring the enviroment=======; ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_valgrind.inc --source include/have_debug.inc --source include/have_innodb.inc --source include/not_crashrep.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"); diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result index 8e572c5fede..736aa917cae 100644 --- a/mysql-test/r/insert.result +++ b/mysql-test/r/insert.result @@ -745,3 +745,9 @@ f1 f2 drop view v1; drop table t1; SET @@sql_mode= @save_mode; +CREATE TABLE t1 (f INT); +CREATE VIEW v1 AS SELECT * FROM t1 WHERE f <=> 'foo' WITH CHECK OPTION; +REPLACE INTO v1 SET f = NULL; +ERROR 22007: Truncated incorrect DOUBLE value: 'foo' +DROP VIEW v1; +DROP TABLE t1; diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 5b41b35c1ba..78eb374b142 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -2569,6 +2569,14 @@ OPTIMIZE TABLE t1; Table Op Msg_type Msg_text test.t1 optimize status OK DROP TABLE t1; +CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)) engine=myisam; +INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'), +(6,'0'),(7,'0'); +flush tables test.t1 for export; +insert into t1 values (8,'0'); +ERROR HY000: Table 't1' was locked with a READ lock and can't be updated +unlock tables; +drop table t1; show variables like 'myisam_block_size'; Variable_name Value myisam_block_size 1024 diff --git a/mysql-test/r/old-mode.result b/mysql-test/r/old-mode.result index c61e30ef85c..73ad613048a 100644 --- a/mysql-test/r/old-mode.result +++ b/mysql-test/r/old-mode.result @@ -127,3 +127,56 @@ Warning 1264 Out of range value for column 'a' at row 1 Warning 1264 Out of range value for column 'b' at row 1 DROP TABLE t1; SET @@global.mysql56_temporal_format=DEFAULT; +set time_zone='Europe/Moscow'; +set global mysql56_temporal_format=false; +create table t1 (a timestamp); +set timestamp=1288477526; +insert t1 values (null); +insert t1 values (); +set timestamp=1288481126; +insert t1 values (null); +insert t1 values (); +select a, unix_timestamp(a) from t1; +a unix_timestamp(a) +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288481126 +2010-10-31 02:25:26 1288481126 +set global mysql56_temporal_format=true; +select a, unix_timestamp(a) from t1; +a unix_timestamp(a) +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288481126 +2010-10-31 02:25:26 1288481126 +alter table t1 modify a timestamp; +select a, unix_timestamp(a) from t1; +a unix_timestamp(a) +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288481126 +2010-10-31 02:25:26 1288481126 +drop table t1; +set global mysql56_temporal_format=false; +create table t1 (a timestamp); +set timestamp=1288477526; +insert t1 values (null); +set timestamp=1288481126; +insert t1 values (null); +select a, unix_timestamp(a) from t1; +a unix_timestamp(a) +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288481126 +set global mysql56_temporal_format=true; +select a, unix_timestamp(a) from t1; +a unix_timestamp(a) +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288481126 +create table t2 (a timestamp); +insert t2 select a from t1; +select a, unix_timestamp(a) from t2; +a unix_timestamp(a) +2010-10-31 02:25:26 1288477526 +2010-10-31 02:25:26 1288481126 +drop table t1, t2; +set time_zone=DEFAULT; diff --git a/mysql-test/suite/engines/funcs/t/rpl_insert.test b/mysql-test/suite/engines/funcs/t/rpl_insert.test index 763a484ea5d..f57a6e226d1 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_insert.test +++ b/mysql-test/suite/engines/funcs/t/rpl_insert.test @@ -2,9 +2,9 @@ --echo # Bug#20821: INSERT DELAYED fails to write some rows to binlog --echo # ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_windows.inc +--source include/master-slave.inc --disable_warnings CREATE SCHEMA IF NOT EXISTS mysqlslap; diff --git a/mysql-test/suite/innodb/t/innodb-index-online.test b/mysql-test/suite/innodb/t/innodb-index-online.test index efd700498c6..5509d985edc 100644 --- a/mysql-test/suite/innodb/t/innodb-index-online.test +++ b/mysql-test/suite/innodb/t/innodb-index-online.test @@ -1,5 +1,6 @@ --source include/innodb_page_size_small.inc --source include/innodb_encrypt_log.inc +--source include/have_debug.inc --source include/have_debug_sync.inc let $innodb_metrics_select= diff --git a/mysql-test/suite/maria/maria.result b/mysql-test/suite/maria/maria.result index 88f39827f27..b5fbcbe113d 100644 --- a/mysql-test/suite/maria/maria.result +++ b/mysql-test/suite/maria/maria.result @@ -2790,3 +2790,11 @@ test.t1 check status OK SET aria_repair_threads=@@global.aria_repair_threads; SET aria_sort_buffer_size=@@global.aria_sort_buffer_size; DROP TABLE t1; +CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)); +INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'), +(6,'0'),(7,'0'); +flush tables test.t1 for export; +insert into t1 values (8,'0'); +ERROR HY000: Table 't1' was locked with a READ lock and can't be updated +unlock tables; +drop table t1; diff --git a/mysql-test/suite/maria/maria.test b/mysql-test/suite/maria/maria.test index 1b930a22c35..e710f32ef80 100644 --- a/mysql-test/suite/maria/maria.test +++ b/mysql-test/suite/maria/maria.test @@ -2019,6 +2019,19 @@ SET aria_sort_buffer_size=@@global.aria_sort_buffer_size; DROP TABLE t1; # +# Check FLUSH FOR EXPORT +# + +CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)); +INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'), + (6,'0'),(7,'0'); +flush tables test.t1 for export; +--error ER_TABLE_NOT_LOCKED_FOR_WRITE +insert into t1 values (8,'0'); +unlock tables; +drop table t1; + +# # End of test # # Set defaults back diff --git a/mysql-test/suite/parts/t/rpl_partition.test b/mysql-test/suite/parts/t/rpl_partition.test index 529d94b2b31..85b3f348921 100644 --- a/mysql-test/suite/parts/t/rpl_partition.test +++ b/mysql-test/suite/parts/t/rpl_partition.test @@ -1,7 +1,7 @@ --source include/have_partition.inc --source include/have_innodb.inc ---source include/master-slave.inc --source include/big_test.inc +--source include/master-slave.inc --vertical_results diff --git a/mysql-test/suite/roles/rpl_grant_revoke_current_role-8638.test b/mysql-test/suite/roles/rpl_grant_revoke_current_role-8638.test index 6a6c4f2a756..10e5e938884 100644 --- a/mysql-test/suite/roles/rpl_grant_revoke_current_role-8638.test +++ b/mysql-test/suite/roles/rpl_grant_revoke_current_role-8638.test @@ -1,5 +1,5 @@ ---source include/master-slave.inc --source include/have_binlog_format_mixed.inc +--source include/master-slave.inc --enable_connect_log diff --git a/mysql-test/suite/rpl/r/rpl_temporal_format_mariadb53_to_mysql56_dst.result b/mysql-test/suite/rpl/r/rpl_temporal_format_mariadb53_to_mysql56_dst.result new file mode 100644 index 00000000000..4072376a120 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_temporal_format_mariadb53_to_mysql56_dst.result @@ -0,0 +1,32 @@ +include/master-slave.inc +[connection master] +connection slave; +set global time_zone='Europe/Moscow'; +set time_zone='UTC'; +stop slave; +start slave; +connection master; +set global mysql56_temporal_format=false; +set global time_zone='Europe/Moscow'; +set time_zone='UTC'; +create table t1 (pk int primary key, t timestamp not null); +set timestamp = 1288477526; +insert into t1 values (1,null); +set timestamp = 1288481126; +insert into t1 values (2,null); +connection slave; +select pk, t, unix_timestamp(t) from t1; +pk t unix_timestamp(t) +1 2010-10-30 22:25:26 1288477526 +2 2010-10-30 23:25:26 1288481126 +set time_zone=default; +select pk, t, unix_timestamp(t) from t1; +pk t unix_timestamp(t) +1 2010-10-31 02:25:26 1288477526 +2 2010-10-31 02:25:26 1288481126 +set global time_zone=default; +connection master; +drop table t1; +set global time_zone=default; +set global mysql56_temporal_format=default; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test b/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test index 3b2fff1cb13..4e604787c70 100644 --- a/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test +++ b/mysql-test/suite/rpl/t/rpl_alter_extra_persistent.test @@ -1,5 +1,5 @@ ---source include/master-slave.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc --enable_connect_log --connection master diff --git a/mysql-test/suite/rpl/t/rpl_auto_increment_bug45679.test b/mysql-test/suite/rpl/t/rpl_auto_increment_bug45679.test index 6996e1c73c7..32f08be7c4d 100644 --- a/mysql-test/suite/rpl/t/rpl_auto_increment_bug45679.test +++ b/mysql-test/suite/rpl/t/rpl_auto_increment_bug45679.test @@ -5,9 +5,9 @@ # is replication unsafe. # -source include/master-slave.inc; source include/have_binlog_format_mixed.inc; source include/have_innodb.inc; +source include/master-slave.inc; call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.'); diff --git a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test index f0ed5dc0123..659f074e8e4 100644 --- a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test +++ b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test @@ -1,6 +1,6 @@ -source include/master-slave.inc; source include/have_innodb.inc; source include/have_binlog_format_statement.inc; +source include/master-slave.inc; connection slave; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_blackhole.test b/mysql-test/suite/rpl/t/rpl_blackhole.test index 5f9b955aaa4..76b2e2421c9 100644 --- a/mysql-test/suite/rpl/t/rpl_blackhole.test +++ b/mysql-test/suite/rpl/t/rpl_blackhole.test @@ -15,8 +15,8 @@ # primary key lookup), and index/key with multiple matches (forcing an # index search). -source include/master-slave.inc; source include/have_blackhole.inc; +source include/master-slave.inc; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_concurrency_error.test b/mysql-test/suite/rpl/t/rpl_concurrency_error.test index 37a05064641..72179ef263a 100644 --- a/mysql-test/suite/rpl/t/rpl_concurrency_error.test +++ b/mysql-test/suite/rpl/t/rpl_concurrency_error.test @@ -17,9 +17,9 @@ # log, the error is ignored and only the non-transactional tables are changed. ############################################################################### ---source include/master-slave.inc --source include/have_innodb.inc --source include/have_binlog_format_statement.inc +--source include/master-slave.inc call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_conditional_comments.test b/mysql-test/suite/rpl/t/rpl_conditional_comments.test index 0e2c108bf6e..bcc964a92c7 100644 --- a/mysql-test/suite/rpl/t/rpl_conditional_comments.test +++ b/mysql-test/suite/rpl/t/rpl_conditional_comments.test @@ -8,8 +8,8 @@ # will be binlogged as # 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/'. ############################################################################### -source include/master-slave.inc; source include/have_binlog_format_statement.inc; +source include/master-slave.inc; CREATE TABLE t1(c1 INT); source include/show_binlog_events.inc; diff --git a/mysql-test/suite/rpl/t/rpl_empty_master_host.test b/mysql-test/suite/rpl/t/rpl_empty_master_host.test index 66d30375a59..0fc2d11a29d 100644 --- a/mysql-test/suite/rpl/t/rpl_empty_master_host.test +++ b/mysql-test/suite/rpl/t/rpl_empty_master_host.test @@ -16,8 +16,8 @@ # along the way if error/no error is thrown and/or if replication starts # working when expected. ---source include/master-slave.inc --source include/have_binlog_format_mixed.inc +--source include/master-slave.inc connection slave; STOP SLAVE; diff --git a/mysql-test/suite/rpl/t/rpl_extra_col_master_innodb.test b/mysql-test/suite/rpl/t/rpl_extra_col_master_innodb.test index f48880b5dfa..201392346be 100644 --- a/mysql-test/suite/rpl/t/rpl_extra_col_master_innodb.test +++ b/mysql-test/suite/rpl/t/rpl_extra_col_master_innodb.test @@ -2,8 +2,8 @@ # 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_innodb.inc +-- source include/master-slave.inc let $engine_type = 'InnoDB'; --source extra/rpl_tests/rpl_extra_col_master.test diff --git a/mysql-test/suite/rpl/t/rpl_flush_logs.test b/mysql-test/suite/rpl/t/rpl_flush_logs.test index 1d19576d47c..6dad588f217 100644 --- a/mysql-test/suite/rpl/t/rpl_flush_logs.test +++ b/mysql-test/suite/rpl/t/rpl_flush_logs.test @@ -4,8 +4,8 @@ # works fine. # ---source include/master-slave.inc --source include/have_binlog_format_statement.inc +--source include/master-slave.inc connection master; # Test 'flush error logs' statement. diff --git a/mysql-test/suite/rpl/t/rpl_geometry.test b/mysql-test/suite/rpl/t/rpl_geometry.test index 769c49c96b1..415732a0228 100644 --- a/mysql-test/suite/rpl/t/rpl_geometry.test +++ b/mysql-test/suite/rpl/t/rpl_geometry.test @@ -1,5 +1,5 @@ -source include/master-slave.inc; source include/have_binlog_format_row.inc; +source include/master-slave.inc; # # Bug#48776, Bug#43784 diff --git a/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test b/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test index 17417a55b8c..dca32c30a94 100644 --- a/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test +++ b/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test @@ -8,9 +8,9 @@ # Finish the following tests by calling its common test script: # extra/rpl_tests/rpl_get_master_version_and_clock.test. -source include/master-slave.inc; source include/have_debug.inc; source include/have_debug_sync.inc; +source include/master-slave.inc; # # The test is not supposed to have any binglog affairs. diff --git a/mysql-test/suite/rpl/t/rpl_grant.test b/mysql-test/suite/rpl/t/rpl_grant.test index a1afa28847e..0220645380a 100644 --- a/mysql-test/suite/rpl/t/rpl_grant.test +++ b/mysql-test/suite/rpl/t/rpl_grant.test @@ -1,7 +1,7 @@ # Tests of grants and users -source include/master-slave.inc; source include/not_embedded.inc; +source include/master-slave.inc; connection master; diff --git a/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test b/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test index 43634ec1528..5b13a5e1fc1 100644 --- a/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test +++ b/mysql-test/suite/rpl/t/rpl_gtid_mdev4484.test @@ -1,6 +1,6 @@ ---source include/master-slave.inc --source include/have_innodb.inc --source include/have_debug.inc +--source include/master-slave.inc CREATE TABLE t1 (i int) ENGINE=InnoDB; diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_debug.test b/mysql-test/suite/rpl/t/rpl_heartbeat_debug.test index 7cdf67d6532..6a426ed1e9f 100644 --- a/mysql-test/suite/rpl/t/rpl_heartbeat_debug.test +++ b/mysql-test/suite/rpl/t/rpl_heartbeat_debug.test @@ -1,7 +1,7 @@ # Testing master to slave heartbeat protocol, test cases that need debug build. ---source include/master-slave.inc --source include/have_debug.inc +--source include/master-slave.inc connection slave; --source include/stop_slave.inc diff --git a/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test b/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test index 76e7c60fd59..1e4f40a0019 100644 --- a/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test +++ b/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test @@ -1,6 +1,6 @@ --source include/have_innodb.inc ---source include/master-slave.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc # # Bug#68220: innodb_rows_updated is misleading on slave when *info_repository=TABLE diff --git a/mysql-test/suite/rpl/t/rpl_insert.test b/mysql-test/suite/rpl/t/rpl_insert.test index 2a29139ac48..48814508818 100644 --- a/mysql-test/suite/rpl/t/rpl_insert.test +++ b/mysql-test/suite/rpl/t/rpl_insert.test @@ -2,9 +2,9 @@ --echo # Bug#20821: INSERT DELAYED fails to write some rows to binlog --echo # ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_windows.inc +--source include/master-slave.inc disable_query_log; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_invoked_features.test b/mysql-test/suite/rpl/t/rpl_invoked_features.test index 7770c36c397..91391cf8372 100644 --- a/mysql-test/suite/rpl/t/rpl_invoked_features.test +++ b/mysql-test/suite/rpl/t/rpl_invoked_features.test @@ -5,8 +5,8 @@ # Features for Replication. ######################################### ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc disable_query_log; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_symlink.test b/mysql-test/suite/rpl/t/rpl_loaddata_symlink.test index c73fa2897f3..e5ee400d231 100644 --- a/mysql-test/suite/rpl/t/rpl_loaddata_symlink.test +++ b/mysql-test/suite/rpl/t/rpl_loaddata_symlink.test @@ -4,8 +4,8 @@ # if the path of the load data file is a symbolic link. # --source include/not_windows.inc ---source include/master-slave.inc --source include/have_binlog_format_statement.inc +--source include/master-slave.inc create table t1(a int not null auto_increment, b int, primary key(a) ); load data infile '../../std_data/rpl_loaddata.dat' into table t1; diff --git a/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test b/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test index a8a6d562ee5..ed26e61d9b6 100644 --- a/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test +++ b/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test @@ -1,8 +1,8 @@ ---source include/master-slave.inc --source include/have_debug.inc --source include/have_debug_sync.inc --source include/have_binlog_format_row.inc --source include/have_innodb.inc +--source include/master-slave.inc connection master; diff --git a/mysql-test/suite/rpl/t/rpl_mdev-11092.test b/mysql-test/suite/rpl/t/rpl_mdev-11092.test index c8b2b7f2ad1..31a385b40e6 100644 --- a/mysql-test/suite/rpl/t/rpl_mdev-11092.test +++ b/mysql-test/suite/rpl/t/rpl_mdev-11092.test @@ -1,8 +1,8 @@ --source include/have_innodb.inc ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_windows.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc ######################################################################################## call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_mdev8193.test b/mysql-test/suite/rpl/t/rpl_mdev8193.test index 29c26bb3da4..dcad3e5f9b0 100644 --- a/mysql-test/suite/rpl/t/rpl_mdev8193.test +++ b/mysql-test/suite/rpl/t/rpl_mdev8193.test @@ -1,5 +1,5 @@ ---source include/master-slave.inc --source include/have_binlog_format_statement.inc +--source include/master-slave.inc --connection slave diff --git a/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test index 3850a84cbf1..81b01cc9140 100644 --- a/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test +++ b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size.test @@ -1,8 +1,8 @@ --source include/have_innodb.inc ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_windows.inc --source include/have_binlog_format_mixed.inc +--source include/master-slave.inc --source extra/rpl_tests/rpl_binlog_max_cache_size.test --source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test b/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test index b2e8308b34d..fa948f8f5fe 100644 --- a/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test +++ b/mysql-test/suite/rpl/t/rpl_mixed_implicit_commit_binlog.test @@ -3,8 +3,8 @@ ################################################################################ --source include/have_udf.inc --source include/have_binlog_format_mixed.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --let $engine=Innodb set session storage_engine=innodb; diff --git a/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test b/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test index 747374b89c2..a9c8f6fe3e1 100644 --- a/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test +++ b/mysql-test/suite/rpl/t/rpl_mixed_mixing_engines.test @@ -3,8 +3,8 @@ # tables. For further details, please, read WL#2687 and WL#5072. ################################################################################### --source include/have_binlog_format_mixed.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc let $engine_type=Innodb; let $database_name=test; diff --git a/mysql-test/suite/rpl/t/rpl_non_direct_mixed_mixing_engines.test b/mysql-test/suite/rpl/t/rpl_non_direct_mixed_mixing_engines.test index 8092ff141db..93ec9acf5ea 100644 --- a/mysql-test/suite/rpl/t/rpl_non_direct_mixed_mixing_engines.test +++ b/mysql-test/suite/rpl/t/rpl_non_direct_mixed_mixing_engines.test @@ -3,8 +3,8 @@ # tables. For further details, please, read WL#2687 and WL#5072. ################################################################################### --source include/have_binlog_format_mixed.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --disable_query_log SET SESSION binlog_direct_non_transactional_updates = OFF; diff --git a/mysql-test/suite/rpl/t/rpl_not_null_innodb.test b/mysql-test/suite/rpl/t/rpl_not_null_innodb.test index 1e67ba4eda1..6a1cc341060 100644 --- a/mysql-test/suite/rpl/t/rpl_not_null_innodb.test +++ b/mysql-test/suite/rpl/t/rpl_not_null_innodb.test @@ -11,9 +11,9 @@ # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) # ################################################################################# ---source include/master-slave.inc --source include/have_innodb.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc let $engine=Innodb; --source extra/rpl_tests/rpl_not_null.test diff --git a/mysql-test/suite/rpl/t/rpl_not_null_myisam.test b/mysql-test/suite/rpl/t/rpl_not_null_myisam.test index dcfaf006dad..6ef0b65d5ff 100644 --- a/mysql-test/suite/rpl/t/rpl_not_null_myisam.test +++ b/mysql-test/suite/rpl/t/rpl_not_null_myisam.test @@ -11,8 +11,8 @@ # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) # ################################################################################# ---source include/master-slave.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc let $engine=MyISAM; --source extra/rpl_tests/rpl_not_null.test diff --git a/mysql-test/suite/rpl/t/rpl_performance_schema.test b/mysql-test/suite/rpl/t/rpl_performance_schema.test index 0562b0ea658..18aabe5272d 100644 --- a/mysql-test/suite/rpl/t/rpl_performance_schema.test +++ b/mysql-test/suite/rpl/t/rpl_performance_schema.test @@ -1,6 +1,6 @@ ---source include/master-slave.inc --source include/have_perfschema.inc --source include/have_binlog_format_mixed.inc +--source include/master-slave.inc UPDATE performance_schema.setup_instruments SET ENABLED="NO"; diff --git a/mysql-test/suite/rpl/t/rpl_read_only.test b/mysql-test/suite/rpl/t/rpl_read_only.test index fb92803847a..c4781bbbb3b 100644 --- a/mysql-test/suite/rpl/t/rpl_read_only.test +++ b/mysql-test/suite/rpl/t/rpl_read_only.test @@ -1,6 +1,6 @@ # Test case for BUG #11733 --- source include/master-slave.inc -- source include/have_innodb.inc +-- source include/master-slave.inc call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_report_port.test b/mysql-test/suite/rpl/t/rpl_report_port.test index 6e728a678ad..2a14d278d48 100644 --- a/mysql-test/suite/rpl/t/rpl_report_port.test +++ b/mysql-test/suite/rpl/t/rpl_report_port.test @@ -17,8 +17,8 @@ # case on doing SHOW SLAVE HOSTS on the master, we get the actual port number # of the slave (ie. SLAVE_PORT). -source include/master-slave.inc; source include/have_binlog_format_mixed.inc; +source include/master-slave.inc; connection master; diff --git a/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test index 9c8489658f8..cc031d382e0 100644 --- a/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test +++ b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size.test @@ -1,8 +1,8 @@ --source include/have_innodb.inc ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_windows.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc --source extra/rpl_tests/rpl_binlog_max_cache_size.test --source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_row_colSize.test b/mysql-test/suite/rpl/t/rpl_row_colSize.test index cdffe2e333b..21c68b55e92 100644 --- a/mysql-test/suite/rpl/t/rpl_row_colSize.test +++ b/mysql-test/suite/rpl/t/rpl_row_colSize.test @@ -6,8 +6,8 @@ # having columns that are smaller (shorter) than the slave. # ################################################################## --- source include/master-slave.inc -- source include/have_binlog_format_row.inc +-- source include/master-slave.inc --disable_warnings DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/rpl/t/rpl_row_corruption.test b/mysql-test/suite/rpl/t/rpl_row_corruption.test index e05273a2f9c..acf3964f0c5 100644 --- a/mysql-test/suite/rpl/t/rpl_row_corruption.test +++ b/mysql-test/suite/rpl/t/rpl_row_corruption.test @@ -1,7 +1,7 @@ # ---source include/master-slave.inc --source include/have_debug.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc # BUG#11753004: 44360: REPLICATION FAILED diff --git a/mysql-test/suite/rpl/t/rpl_row_create_table.test b/mysql-test/suite/rpl/t/rpl_row_create_table.test index 38e4c5a5e63..65f14295c19 100644 --- a/mysql-test/suite/rpl/t/rpl_row_create_table.test +++ b/mysql-test/suite/rpl/t/rpl_row_create_table.test @@ -1,8 +1,8 @@ # Testing table creations for row-based replication. --source include/have_binlog_format_row.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc connection slave; --source include/have_innodb.inc connection master; diff --git a/mysql-test/suite/rpl/t/rpl_row_find_row.test b/mysql-test/suite/rpl/t/rpl_row_find_row.test index 7f633c5aa97..444706aca7f 100644 --- a/mysql-test/suite/rpl/t/rpl_row_find_row.test +++ b/mysql-test/suite/rpl/t/rpl_row_find_row.test @@ -16,8 +16,8 @@ # has been fixed. # --- source include/master-slave.inc -- source include/have_binlog_format_row.inc +-- source include/master-slave.inc # # Case #1: master has key, but slave has not. diff --git a/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test b/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test index 2b35f68ff63..6fdcd885930 100644 --- a/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test +++ b/mysql-test/suite/rpl/t/rpl_row_implicit_commit_binlog.test @@ -3,8 +3,8 @@ ################################################################################ --source include/have_udf.inc --source include/have_binlog_format_row.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --let $engine=Innodb set session storage_engine=innodb; diff --git a/mysql-test/suite/rpl/t/rpl_row_index_choice.test b/mysql-test/suite/rpl/t/rpl_row_index_choice.test index 6d4053f9737..0ad9b315d66 100644 --- a/mysql-test/suite/rpl/t/rpl_row_index_choice.test +++ b/mysql-test/suite/rpl/t/rpl_row_index_choice.test @@ -1,7 +1,7 @@ --source include/have_binlog_format_row.inc ---source include/master-slave.inc --source include/have_debug.inc --source include/have_innodb.inc +--source include/master-slave.inc # Bug#58997: Row-based replication breaks on table with only fulltext index: connection master; diff --git a/mysql-test/suite/rpl/t/rpl_row_merge_engine.test b/mysql-test/suite/rpl/t/rpl_row_merge_engine.test index dcbb8b891d8..c28d4a89651 100644 --- a/mysql-test/suite/rpl/t/rpl_row_merge_engine.test +++ b/mysql-test/suite/rpl/t/rpl_row_merge_engine.test @@ -12,8 +12,8 @@ # deletes their contents through the merge table. Finally, the slave # is synchronized with the master and (after the fix) it won't crash. # ---source include/master-slave.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc --connection master CREATE TABLE t1 (a int) ENGINE=MyISAM; diff --git a/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test b/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test index 57d67c5c71b..b3808680db2 100644 --- a/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test +++ b/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test @@ -1,6 +1,6 @@ -- source include/have_binlog_format_row.inc --- source include/master-slave.inc -- source include/have_innodb.inc +-- source include/master-slave.inc # # BUG#52868 Wrong handling of NULL value during update, replication out of sync diff --git a/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test b/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test index a78f7ad4271..0882d603203 100644 --- a/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test +++ b/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test @@ -12,8 +12,8 @@ # This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after # some statements have been issued. --- source include/master-slave.inc -- source include/have_binlog_format_row.inc +-- source include/master-slave.inc -- source extra/rpl_tests/rpl_show_relaylog_events.inc --source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test b/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test index e8ac74f0125..5bdd1ff8b6b 100644 --- a/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test +++ b/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test @@ -26,9 +26,9 @@ # with mysqlbinlog reporting that it was unable to succeed in # reading the event. --- source include/master-slave.inc -- source include/have_innodb.inc -- source include/have_binlog_format_row.inc +-- source include/master-slave.inc -- disable_warnings DROP TABLE IF EXISTS `t1`; diff --git a/mysql-test/suite/rpl/t/rpl_row_trunc_temp.test b/mysql-test/suite/rpl/t/rpl_row_trunc_temp.test index 394bf949f72..a8d7f77d930 100644 --- a/mysql-test/suite/rpl/t/rpl_row_trunc_temp.test +++ b/mysql-test/suite/rpl/t/rpl_row_trunc_temp.test @@ -6,8 +6,8 @@ # table was binlogged in RBR. # ---source include/master-slave.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc #This statement is not binlogged in RBR. CREATE TEMPORARY TABLE t1(c1 INTEGER); diff --git a/mysql-test/suite/rpl/t/rpl_row_utf16.test b/mysql-test/suite/rpl/t/rpl_row_utf16.test index a48a36189ae..d5dcdc4233d 100644 --- a/mysql-test/suite/rpl/t/rpl_row_utf16.test +++ b/mysql-test/suite/rpl/t/rpl_row_utf16.test @@ -1,6 +1,6 @@ --- source include/master-slave.inc -- source include/have_binlog_format_row.inc -- source include/have_utf16.inc +-- source include/master-slave.inc # # BUG#51716: Char column with utf16 character set gives wrong padding on slave diff --git a/mysql-test/suite/rpl/t/rpl_row_wide_table.test b/mysql-test/suite/rpl/t/rpl_row_wide_table.test index b1d16133096..01473f991bf 100644 --- a/mysql-test/suite/rpl/t/rpl_row_wide_table.test +++ b/mysql-test/suite/rpl/t/rpl_row_wide_table.test @@ -8,8 +8,8 @@ # in corrupt binlog ################################################################## --- source include/master-slave.inc -- source include/have_binlog_format_row.inc +-- source include/master-slave.inc --disable_warnings DROP TABLE IF EXISTS t300; diff --git a/mysql-test/suite/rpl/t/rpl_savepoint.test b/mysql-test/suite/rpl/t/rpl_savepoint.test index 6cd7a7a2d39..31af6151728 100644 --- a/mysql-test/suite/rpl/t/rpl_savepoint.test +++ b/mysql-test/suite/rpl/t/rpl_savepoint.test @@ -1,5 +1,5 @@ ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --echo # --echo # Bug#50124 Rpl failure on DROP table with concurrent txn/non-txn diff --git a/mysql-test/suite/rpl/t/rpl_server_id_ignore.test b/mysql-test/suite/rpl/t/rpl_server_id_ignore.test index 1e6d46c9d40..537978f1701 100644 --- a/mysql-test/suite/rpl/t/rpl_server_id_ignore.test +++ b/mysql-test/suite/rpl/t/rpl_server_id_ignore.test @@ -17,8 +17,8 @@ # b. nullifying the list and resuming of taking binlog from the very beginning with # executing events this time -source include/master-slave.inc; source include/have_binlog_format_mixed.inc; +source include/master-slave.inc; connection slave; diff --git a/mysql-test/suite/rpl/t/rpl_set_null_innodb.test b/mysql-test/suite/rpl/t/rpl_set_null_innodb.test index 2d0c34e1d0a..5ef10263498 100644 --- a/mysql-test/suite/rpl/t/rpl_set_null_innodb.test +++ b/mysql-test/suite/rpl/t/rpl_set_null_innodb.test @@ -1,6 +1,6 @@ -- source include/have_binlog_format_mixed_or_row.inc --- source include/master-slave.inc -- source include/have_innodb.inc +-- source include/master-slave.inc -- let $engine= InnoDB -- source extra/rpl_tests/rpl_set_null.test diff --git a/mysql-test/suite/rpl/t/rpl_skip_error.test b/mysql-test/suite/rpl/t/rpl_skip_error.test index 1144d6a1a7c..fa8eeb73fba 100644 --- a/mysql-test/suite/rpl/t/rpl_skip_error.test +++ b/mysql-test/suite/rpl/t/rpl_skip_error.test @@ -23,8 +23,8 @@ # bug in this test: BUG#30594: rpl.rpl_skip_error is nondeterministic: # BUG#39393: slave-skip-errors does not work when using ROW based replication -source include/master-slave.inc; source include/have_innodb.inc; +source include/master-slave.inc; --echo ==== Test Without sql_mode=strict_trans_tables ==== diff --git a/mysql-test/suite/rpl/t/rpl_skip_incident.test b/mysql-test/suite/rpl/t/rpl_skip_incident.test index c6db5ef61d1..704854aeed8 100644 --- a/mysql-test/suite/rpl/t/rpl_skip_incident.test +++ b/mysql-test/suite/rpl/t/rpl_skip_incident.test @@ -1,5 +1,5 @@ ---source include/master-slave.inc --source include/have_debug.inc +--source include/master-slave.inc connection master; SET GLOBAL BINLOG_CHECKSUM=NONE; diff --git a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test index b1af6e92c29..69319bad4a0 100644 --- a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test +++ b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test @@ -20,9 +20,9 @@ --source include/have_binlog_format_statement.inc --source include/have_innodb.inc --source include/have_debug.inc ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_var_link.inc +--source include/master-slave.inc ########################################################################## # Loading data diff --git a/mysql-test/suite/rpl/t/rpl_slave_skip.test b/mysql-test/suite/rpl/t/rpl_slave_skip.test index 09ecccaf193..2ec80758486 100644 --- a/mysql-test/suite/rpl/t/rpl_slave_skip.test +++ b/mysql-test/suite/rpl/t/rpl_slave_skip.test @@ -4,8 +4,8 @@ # test for MIXED mode. source include/have_binlog_format_mixed.inc; -source include/master-slave.inc; source include/have_innodb.inc; +source include/master-slave.inc; connection slave; source include/have_innodb.inc; diff --git a/mysql-test/suite/rpl/t/rpl_slow_query_log.test b/mysql-test/suite/rpl/t/rpl_slow_query_log.test index 3505883c58e..df88d42ed68 100644 --- a/mysql-test/suite/rpl/t/rpl_slow_query_log.test +++ b/mysql-test/suite/rpl/t/rpl_slow_query_log.test @@ -25,8 +25,8 @@ # Note that due to the sleep() command the insert is written to the binary # log in row format. -source include/master-slave.inc; source include/have_binlog_format_statement.inc; +source include/master-slave.inc; CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group"); diff --git a/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test index 352213304b6..93cc06111e4 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test +++ b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size.test @@ -1,8 +1,8 @@ --source include/have_innodb.inc ---source include/master-slave.inc --source include/not_embedded.inc --source include/not_windows.inc --source include/have_binlog_format_statement.inc +--source include/master-slave.inc --source extra/rpl_tests/rpl_binlog_max_cache_size.test --source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_stm_drop_create_temp_table.test b/mysql-test/suite/rpl/t/rpl_stm_drop_create_temp_table.test index 7770fc77748..b395654a714 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_drop_create_temp_table.test +++ b/mysql-test/suite/rpl/t/rpl_stm_drop_create_temp_table.test @@ -5,8 +5,8 @@ ################################################################################### --source include/big_test.inc --source include/have_binlog_format_statement.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --source extra/rpl_tests/rpl_drop_create_temp_table.test --source include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test b/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test index 1e66b76abc8..774c87f551e 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test +++ b/mysql-test/suite/rpl/t/rpl_stm_implicit_commit_binlog.test @@ -3,8 +3,8 @@ ################################################################################ --source include/have_udf.inc --source include/have_binlog_format_statement.inc ---source include/master-slave.inc --source include/have_innodb.inc +--source include/master-slave.inc --let $engine=Innodb set session storage_engine=innodb; diff --git a/mysql-test/suite/rpl/t/rpl_stm_loadfile.test b/mysql-test/suite/rpl/t/rpl_stm_loadfile.test index e82c951ce0c..016d3ed6090 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_loadfile.test +++ b/mysql-test/suite/rpl/t/rpl_stm_loadfile.test @@ -12,8 +12,8 @@ ########## # Includes --- source include/master-slave.inc -- source include/have_binlog_format_statement.inc +-- source include/master-slave.inc disable_query_log; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); diff --git a/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test b/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test index dfe2e49bb90..76b2aed3f24 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test +++ b/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test @@ -1,9 +1,9 @@ ################################################################################ # Please, check ./extra/rpl_tests/rpl_start_stop_slave.test ################################################################################ ---source include/master-slave.inc --source include/have_binlog_format_statement.inc --source include/have_innodb.inc +--source include/master-slave.inc # make innodb updates run fast --connection slave diff --git a/mysql-test/suite/rpl/t/rpl_stm_user_variables.test b/mysql-test/suite/rpl/t/rpl_stm_user_variables.test index 493ea4cd967..18b90658b31 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_user_variables.test +++ b/mysql-test/suite/rpl/t/rpl_stm_user_variables.test @@ -2,8 +2,8 @@ # BUG#49562: SBR out of sync when using numeric data types + user variable # --- source include/master-slave.inc -- source include/have_binlog_format_statement.inc +-- source include/master-slave.inc ## Setup user variables for several numeric types, so that we get ## coverage on the User_var_log_event different val types diff --git a/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test b/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test index 070e5189949..cbbf4c5ffa7 100644 --- a/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test +++ b/mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test @@ -9,9 +9,9 @@ # 4: sync to slave and check the number of temp tables on slave. # -source include/master-slave.inc; source include/have_binlog_format_mixed.inc; source include/have_innodb.inc; +source include/master-slave.inc; --echo ==== Initialize ==== diff --git a/mysql-test/suite/rpl/t/rpl_temporal_format_mariadb53_to_mysql56_dst.test b/mysql-test/suite/rpl/t/rpl_temporal_format_mariadb53_to_mysql56_dst.test new file mode 100644 index 00000000000..511bdc15184 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_temporal_format_mariadb53_to_mysql56_dst.test @@ -0,0 +1,37 @@ +# +# MDEV-12672 Replicated TIMESTAMP fields given wrong value near DST change +# +source include/have_binlog_format_row.inc; +source include/master-slave.inc; + +connection slave; +set global time_zone='Europe/Moscow'; +set time_zone='UTC'; +stop slave; +start slave; + +connection master; +set global mysql56_temporal_format=false; +set global time_zone='Europe/Moscow'; +set time_zone='UTC'; + +create table t1 (pk int primary key, t timestamp not null); +set timestamp = 1288477526; +insert into t1 values (1,null); +set timestamp = 1288481126; +insert into t1 values (2,null); + +sync_slave_with_master; + +select pk, t, unix_timestamp(t) from t1; +set time_zone=default; +select pk, t, unix_timestamp(t) from t1; + +set global time_zone=default; + +connection master; +drop table t1; +set global time_zone=default; +set global mysql56_temporal_format=default; + +source include/rpl_end.inc; diff --git a/mysql-test/suite/rpl/t/rpl_temporary_errors.test b/mysql-test/suite/rpl/t/rpl_temporary_errors.test index ab050cdc076..6392fb90b9b 100644 --- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test +++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test @@ -1,6 +1,6 @@ source include/have_binlog_format_row.inc; -source include/master-slave.inc; source include/have_innodb.inc; +source include/master-slave.inc; call mtr.add_suppression("Deadlock found"); call mtr.add_suppression("Can't find record in 't.'"); diff --git a/mysql-test/suite/rpl/t/sec_behind_master-5114.test b/mysql-test/suite/rpl/t/sec_behind_master-5114.test index ff8cab54c4f..d1d21bfa766 100644 --- a/mysql-test/suite/rpl/t/sec_behind_master-5114.test +++ b/mysql-test/suite/rpl/t/sec_behind_master-5114.test @@ -1,5 +1,5 @@ -source include/master-slave.inc; source include/have_binlog_format_statement.inc; +source include/master-slave.inc; call mtr.add_suppression("Unsafe statement written to the binary log"); diff --git a/mysql-test/t/create_or_replace2.test b/mysql-test/t/create_or_replace2.test index 6cee7fac2e9..199e5523811 100644 --- a/mysql-test/t/create_or_replace2.test +++ b/mysql-test/t/create_or_replace2.test @@ -3,9 +3,9 @@ # --source include/have_debug.inc ---source include/master-slave.inc --source include/have_binlog_format_row.inc --source include/have_innodb.inc +--source include/master-slave.inc --disable_warnings drop table if exists t1; diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index 80caefa5a0f..d57e9051e3f 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -602,3 +602,13 @@ remove_file $MYSQLD_DATADIR/test/t1.txt; drop view v1; drop table t1; SET @@sql_mode= @save_mode; + +# +# MDEV-13861 Assertion `0' failed in Protocol::end_statement +# +CREATE TABLE t1 (f INT); +CREATE VIEW v1 AS SELECT * FROM t1 WHERE f <=> 'foo' WITH CHECK OPTION; +--error ER_TRUNCATED_WRONG_VALUE +REPLACE INTO v1 SET f = NULL; +DROP VIEW v1; +DROP TABLE t1; diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 572fa55e70f..0da542e499e 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -1770,6 +1770,19 @@ OPTIMIZE TABLE t1; DROP TABLE t1; # +# Check FLUSH FOR EXPORT +# + +CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)) engine=myisam; +INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'), + (6,'0'),(7,'0'); +flush tables test.t1 for export; +--error ER_TABLE_NOT_LOCKED_FOR_WRITE +insert into t1 values (8,'0'); +unlock tables; +drop table t1; + +# # Check some variables # show variables like 'myisam_block_size'; diff --git a/mysql-test/t/old-mode.test b/mysql-test/t/old-mode.test index b9012a96713..d7e8ce8ee55 100644 --- a/mysql-test/t/old-mode.test +++ b/mysql-test/t/old-mode.test @@ -83,3 +83,39 @@ SELECT TO_DAYS(a), TO_DAYS(b) FROM t1; DROP TABLE t1; SET @@global.mysql56_temporal_format=DEFAULT; +# +# MDEV-12672 Replicated TIMESTAMP fields given wrong value near DST change +# + +# Copy_field +set time_zone='Europe/Moscow'; +set global mysql56_temporal_format=false; +create table t1 (a timestamp); +set timestamp=1288477526; +insert t1 values (null); +insert t1 values (); +set timestamp=1288481126; +insert t1 values (null); +insert t1 values (); +select a, unix_timestamp(a) from t1; +set global mysql56_temporal_format=true; +select a, unix_timestamp(a) from t1; +alter table t1 modify a timestamp; +select a, unix_timestamp(a) from t1; +drop table t1; + +# field_conv_incompatible() +set global mysql56_temporal_format=false; +create table t1 (a timestamp); +set timestamp=1288477526; +insert t1 values (null); +set timestamp=1288481126; +insert t1 values (null); +select a, unix_timestamp(a) from t1; +set global mysql56_temporal_format=true; +select a, unix_timestamp(a) from t1; +create table t2 (a timestamp); +insert t2 select a from t1; +select a, unix_timestamp(a) from t2; +drop table t1, t2; +set time_zone=DEFAULT; diff --git a/mysql-test/t/stat_tables_repl.test b/mysql-test/t/stat_tables_repl.test index 999c49d37cf..ac24c9dcbd7 100644 --- a/mysql-test/t/stat_tables_repl.test +++ b/mysql-test/t/stat_tables_repl.test @@ -1,6 +1,6 @@ --source include/have_stat_tables.inc ---source include/master-slave.inc --source include/have_binlog_format_row.inc +--source include/master-slave.inc --echo # --echo # Bug mdev-485: unexpected failure with replication of DROP/ALTER table diff --git a/scripts/galera_recovery.sh b/scripts/galera_recovery.sh index d734ceb7ac7..de2e653c497 100644 --- a/scripts/galera_recovery.sh +++ b/scripts/galera_recovery.sh @@ -69,7 +69,7 @@ parse_arguments() { wsrep_recover_position() { # Redirect server's error log to the log file. eval /usr/sbin/mysqld $cmdline_args --user=$user --wsrep_recover \ - --log-error="$log_file" + --disable-log-error 2> "$log_file" ret=$? if [ $ret -ne 0 ]; then # Something went wrong, let us also print the error log so that it diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 48baf61be3a..3a06f7e4858 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -245,7 +245,7 @@ wsrep_recover_position() { local euid=$(id -u) local ret=0 - local wr_logfile=$(mktemp $DATADIR/wsrep_recovery.XXXXXX) + local wr_logfile=$(mktemp wsrep_recovery.XXXXXX) # safety checks if [ -z $wr_logfile ]; then @@ -263,11 +263,11 @@ wsrep_recover_position() { local wr_pidfile="$DATADIR/"`@HOSTNAME@`"-recover.pid" - local wr_options="--log_error='$wr_logfile' --pid-file='$wr_pidfile'" + local wr_options="--disable-log-error --pid-file='$wr_pidfile'" log_notice "WSREP: Running position recovery with $wr_options" - eval_log_error "$mysqld_cmd --wsrep_recover $wr_options" + eval_log_error "$mysqld_cmd --wsrep_recover $wr_options 2> $wr_logfile" local rp="$(grep 'WSREP: Recovered position:' $wr_logfile)" if [ -z "$rp" ]; then diff --git a/sql/field.cc b/sql/field.cc index fbb2ad79ba9..acf0af095a1 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1713,6 +1713,33 @@ int Field::store(const char *to, uint length, CHARSET_INFO *cs, } +static int timestamp_to_TIME(THD *thd, MYSQL_TIME *ltime, my_time_t ts, + ulong sec_part, ulonglong fuzzydate) +{ + thd->time_zone_used= 1; + if (ts == 0 && sec_part == 0) + { + if (fuzzydate & TIME_NO_ZERO_DATE) + return 1; + set_zero_time(ltime, MYSQL_TIMESTAMP_DATETIME); + } + else + { + thd->variables.time_zone->gmt_sec_to_TIME(ltime, ts); + ltime->second_part= sec_part; + } + return 0; +} + + +int Field::store_timestamp(my_time_t ts, ulong sec_part) +{ + MYSQL_TIME ltime; + THD *thd= get_thd(); + timestamp_to_TIME(thd, <ime, ts, sec_part, 0); + return store_time_dec(<ime, decimals()); +} + /** Pack the field into a format suitable for storage and transfer. @@ -4810,6 +4837,13 @@ Field_timestamp::Field_timestamp(uchar *ptr_arg, uint32 len_arg, } +int Field_timestamp::save_in_field(Field *to) +{ + ulong sec_part; + my_time_t ts= get_timestamp(&sec_part); + return to->store_timestamp(ts, sec_part); +} + my_time_t Field_timestamp::get_timestamp(const uchar *pos, ulong *sec_part) const { @@ -4936,6 +4970,22 @@ int Field_timestamp::store(longlong nr, bool unsigned_val) } +int Field_timestamp::store_timestamp(my_time_t ts, ulong sec_part) +{ + store_TIME(ts, sec_part); + if (ts == 0 && sec_part == 0 && + get_thd()->variables.sql_mode & TIME_NO_ZERO_DATE) + { + ErrConvString s( + STRING_WITH_LEN("0000-00-00 00:00:00.000000") - (decimals() ? 6 - decimals() : 7), + system_charset_info); + set_datetime_warning(WARN_DATA_TRUNCATED, &s, MYSQL_TIMESTAMP_DATETIME, 1); + return 1; + } + return 0; +} + + double Field_timestamp::val_real(void) { return (double) Field_timestamp::val_int(); @@ -5039,22 +5089,9 @@ Field_timestamp::validate_value_in_record(THD *thd, const uchar *record) const bool Field_timestamp::get_date(MYSQL_TIME *ltime, ulonglong fuzzydate) { - THD *thd= get_thd(); - thd->time_zone_used= 1; ulong sec_part; - my_time_t temp= get_timestamp(&sec_part); - if (temp == 0 && sec_part == 0) - { /* Zero time is "000000" */ - if (fuzzydate & TIME_NO_ZERO_DATE) - return 1; - set_zero_time(ltime, MYSQL_TIMESTAMP_DATETIME); - } - else - { - thd->variables.time_zone->gmt_sec_to_TIME(ltime, (my_time_t)temp); - ltime->second_part= sec_part; - } - return 0; + my_time_t ts= get_timestamp(&sec_part); + return timestamp_to_TIME(get_thd(), ltime, ts, sec_part, fuzzydate); } @@ -5104,36 +5141,6 @@ int Field_timestamp::set_time() return 0; } -/** - Mark the field as having an explicit default value. - - @param value if available, the value that the field is being set to - @returns whether the explicit default bit was set - - @note - Fields that have an explicit default value should not be updated - automatically via the DEFAULT or ON UPDATE functions. The functions - that deal with data change functionality (INSERT/UPDATE/LOAD), - determine if there is an explicit value for each field before performing - the data change, and call this method to mark the field. - - For timestamp columns, the only case where a column is not marked - as been given a value are: - - It's explicitly assigned with DEFAULT - - We assign NULL to a timestamp field that is defined as NOT NULL. - This is how MySQL has worked since it's start. -*/ - -bool Field_timestamp::set_explicit_default(Item *value) -{ - if (((value->type() == Item::DEFAULT_VALUE_ITEM && - !((Item_default_value*)value)->arg) || - (!maybe_null() && value->null_value))) - return false; - set_has_explicit_value(); - return true; -} - #ifdef NOT_USED static void store_native(ulonglong num, uchar *to, uint bytes) { diff --git a/sql/field.h b/sql/field.h index f3f9c9a30ac..f36e9a668c4 100644 --- a/sql/field.h +++ b/sql/field.h @@ -657,6 +657,7 @@ protected: static void do_field_real(Copy_field *copy); static void do_field_string(Copy_field *copy); static void do_field_temporal(Copy_field *copy); + static void do_field_timestamp(Copy_field *copy); static void do_field_decimal(Copy_field *copy); public: static void *operator new(size_t size, MEM_ROOT *mem_root) throw () @@ -814,6 +815,7 @@ public: virtual int store(longlong nr, bool unsigned_val)=0; virtual int store_decimal(const my_decimal *d)=0; virtual int store_time_dec(MYSQL_TIME *ltime, uint dec); + virtual int store_timestamp(my_time_t timestamp, ulong sec_part); int store_time(MYSQL_TIME *ltime) { return store_time_dec(ltime, TIME_SECOND_PART_DIGITS); } int store(const char *to, uint length, CHARSET_INFO *cs, @@ -980,7 +982,7 @@ public: { return bitmap_is_set(&table->has_value_set, field_index); } - virtual bool set_explicit_default(Item *value); + bool set_explicit_default(Item *value); /** Evaluates the @c UPDATE default function, if one exists, and stores the @@ -2389,11 +2391,14 @@ public: TABLE_SHARE *share); const Type_handler *type_handler() const { return &type_handler_timestamp; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; } + Copy_func *get_copy_func(const Field *from) const; int store(const char *to,uint length,CHARSET_INFO *charset); int store(double nr); int store(longlong nr, bool unsigned_val); int store_time_dec(MYSQL_TIME *ltime, uint dec); int store_decimal(const my_decimal *); + int store_timestamp(my_time_t timestamp, ulong sec_part); + int save_in_field(Field *to); double val_real(void); longlong val_int(void); String *val_str(String*,String *); @@ -2404,7 +2409,6 @@ public: void sql_type(String &str) const; bool zero_pack() const { return 0; } int set_time(); - bool set_explicit_default(Item *value); int evaluate_update_default_function() { int res= 0; diff --git a/sql/field_conv.cc b/sql/field_conv.cc index a744af76626..932188d56a8 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -417,6 +417,13 @@ void Field::do_field_decimal(Copy_field *copy) } +void Field::do_field_timestamp(Copy_field *copy) +{ + // XXX why couldn't we do it everywhere? + copy->from_field->save_in_field(copy->to_field); +} + + void Field::do_field_temporal(Copy_field *copy) { MYSQL_TIME ltime; @@ -706,6 +713,16 @@ void Copy_field::set(Field *to,Field *from,bool save) } +Field::Copy_func *Field_timestamp::get_copy_func(const Field *from) const +{ + Field::Copy_func *copy= Field_temporal::get_copy_func(from); + if (copy == do_field_temporal && from->type() == MYSQL_TYPE_TIMESTAMP) + return do_field_timestamp; + else + return copy; +} + + Field::Copy_func *Field_temporal::get_copy_func(const Field *from) const { /* If types are not 100 % identical then convert trough get_date() */ diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index b0270c6f055..86bde00cced 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1706,6 +1706,25 @@ void Item_func_now::print(String *str, enum_query_type query_type) str->append(')'); } + +int Item_func_now_local::save_in_field(Field *field, bool no_conversions) +{ + if (field->type() == MYSQL_TYPE_TIMESTAMP) + { + THD *thd= field->get_thd(); + my_time_t ts= thd->query_start(); + uint dec= MY_MIN(decimals, field->decimals()); + ulong sec_part= dec ? thd->query_start_sec_part() : 0; + sec_part-= my_time_fraction_remainder(sec_part, dec); + field->set_notnull(); + ((Field_timestamp*)field)->store_TIME(ts, sec_part); + return 0; + } + else + return Item_temporal_func::save_in_field(field, no_conversions); +} + + /** Converts current time in my_time_t to MYSQL_TIME represenatation for local time zone. Defines time zone (local) used for whole NOW function. diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index a752c160557..7d2fe46b644 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -729,6 +729,7 @@ class Item_func_now_local :public Item_func_now public: Item_func_now_local(THD *thd, uint dec): Item_func_now(thd, dec) {} const char *func_name() const { return "current_timestamp"; } + int save_in_field(Field *field, bool no_conversions); virtual void store_now_in_TIME(THD *thd, MYSQL_TIME *now_time); virtual enum Functype functype() const { return NOW_FUNC; } Item *get_copy(THD *thd, MEM_ROOT *mem_root) diff --git a/sql/sql_class.h b/sql/sql_class.h index 452193de0aa..1c4e657cf5a 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1636,6 +1636,29 @@ public: /** + Implements the trivial error handler which counts errors as they happen. +*/ + +class Counting_error_handler : public Internal_error_handler +{ +public: + int errors; + bool handle_condition(THD *thd, + uint sql_errno, + const char* sqlstate, + Sql_condition::enum_warning_level *level, + const char* msg, + Sql_condition ** cond_hdl) + { + if (*level == Sql_condition::WARN_LEVEL_ERROR) + errors++; + return false; + } + Counting_error_handler() : errors(0) {} +}; + + +/** This class is an internal error handler implementation for DROP TABLE statements. The thing is that there may be warnings during execution of these statements, which should not be exposed to the user. diff --git a/sql/table.cc b/sql/table.cc index a9ab23d672b..7c6aa205edd 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -5077,23 +5077,28 @@ void TABLE_LIST::cleanup_items() int TABLE_LIST::view_check_option(THD *thd, bool ignore_failure) { - /* VIEW's CHECK OPTION CLAUSE */ - if (check_option && check_option->val_int() == 0) - { - TABLE_LIST *main_view= top_table(); - const char *name_db= (main_view->view ? main_view->view_db.str : - main_view->db); - const char *name_table= (main_view->view ? main_view->view_name.str : - main_view->table_name); - my_error(ER_VIEW_CHECK_FAILED, MYF(ignore_failure ? ME_JUST_WARNING : 0), - name_db, name_table); - return ignore_failure ? VIEW_CHECK_SKIP : VIEW_CHECK_ERROR; - } - int result= table->verify_constraints(ignore_failure); - /* We check thd->error() because it can be set by conversion problem. */ - if (thd->is_error()) - return(VIEW_CHECK_ERROR); - return result; + if (check_option) + { + /* VIEW's CHECK OPTION CLAUSE */ + Counting_error_handler ceh; + thd->push_internal_handler(&ceh); + bool res= check_option->val_int() == 0; + thd->pop_internal_handler(); + if (ceh.errors) + return(VIEW_CHECK_ERROR); + if (res) + { + TABLE_LIST *main_view= top_table(); + const char *name_db= (main_view->view ? main_view->view_db.str : + main_view->db); + const char *name_table= (main_view->view ? main_view->view_name.str : + main_view->table_name); + my_error(ER_VIEW_CHECK_FAILED, MYF(ignore_failure ? ME_JUST_WARNING : 0), + name_db, name_table); + return ignore_failure ? VIEW_CHECK_SKIP : VIEW_CHECK_ERROR; + } + } + return table->verify_constraints(ignore_failure); } diff --git a/storage/connect/CMakeLists.txt b/storage/connect/CMakeLists.txt index a1594f8797c..d422b076fc2 100644 --- a/storage/connect/CMakeLists.txt +++ b/storage/connect/CMakeLists.txt @@ -247,7 +247,7 @@ ENDIF(CONNECT_WITH_ODBC) # # JDBC with MongoDB Java Driver included but disabled # -OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON) +#OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON) OPTION(CONNECT_WITH_JDBC "Compile CONNECT storage engine with JDBC support" ON) IF(CONNECT_WITH_JDBC) @@ -303,7 +303,7 @@ IF(CONNECT_WITH_MONGO) C:/mongo-c-driver/lib D:/mongo-c-driver/lib) ENDIF(WIN32) - FIND_PACKAGE(libmongoc-1.0 1.7) + FIND_PACKAGE(libmongoc-1.0 1.7 QUIET) IF (libmongoc-1.0_FOUND) INCLUDE_DIRECTORIES(${MONGOC_INCLUDE_DIRS}) SET(MONGOC_LIBRARY ${MONGOC_LIBRARIES}) diff --git a/storage/connect/preparse.h b/storage/connect/preparse.h index f16624548fb..3db7a2af1cd 100644 --- a/storage/connect/preparse.h +++ b/storage/connect/preparse.h @@ -8,7 +8,7 @@ /***********************************************************************/ typedef struct _datpar { const char *Format; // Points to format to decode - char *Curp; // Points to current parsing position + const char *Curp; // Points to current parsing position char *InFmt; // Start of input format char *OutFmt; // Start of output format int Index[8]; // Indexes of date values diff --git a/storage/connect/tabmysql.h b/storage/connect/tabmysql.h index 39fba87bcc9..4b61c7eb762 100644 --- a/storage/connect/tabmysql.h +++ b/storage/connect/tabmysql.h @@ -135,7 +135,7 @@ class TDBMYSQL : public TDBEXT { int m_Rc; // Return code from command //int AftRows; // The number of affected rows int N; // The current table index - int Port; // MySQL port number (0 = default) + unsigned Port; // MySQL port number (0 = default) //int Nparm; // The number of statement parameters //int Quoted; // The identifier quoting level }; // end of class TDBMYSQL diff --git a/storage/connect/tabutil.cpp b/storage/connect/tabutil.cpp index 9ab3d5e8806..e17e092661f 100644 --- a/storage/connect/tabutil.cpp +++ b/storage/connect/tabutil.cpp @@ -120,7 +120,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db, FLD_REM, FLD_NO, FLD_CHARSET}; unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32}; PCSZ fmt; - char *pn, *tn, *fld, *colname, *chset, v; + char *pn, *tn, *fld, *colname, v; //, *chset; int i, n, ncol = sizeof(buftyp) / sizeof(int); int prec, len, type, scale; int zconv = GetConvSize(); @@ -185,7 +185,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db, colname = (char *)fp->field_name.str; crp->Kdata->SetValue(colname, i); - chset = (char *)fp->charset()->name; +// chset = (char *)fp->charset()->name; // v = (!strcmp(chset, "binary")) ? 'B' : 0; v = 0; diff --git a/storage/innobase/include/page0page.h b/storage/innobase/include/page0page.h index 3b6a0215249..53a58de229d 100644 --- a/storage/innobase/include/page0page.h +++ b/storage/innobase/include/page0page.h @@ -328,10 +328,10 @@ bool page_rec_is_leaf(const page_t* rec) { const page_t* page = page_align(rec); - ut_ad(rec - page >= page_get_infimum_offset(page)); + ut_ad(ulint(rec - page) >= page_get_infimum_offset(page)); bool leaf = page_is_leaf(page); ut_ad(!page_rec_is_comp(rec) - || !page_rec_is_user_rec_low(rec - page) + || !page_rec_is_user_rec_low(ulint(rec - page)) || leaf == !rec_get_node_ptr_flag(rec)); return leaf; } diff --git a/storage/innobase/page/page0cur.cc b/storage/innobase/page/page0cur.cc index 23a11fcfaa3..113c31e44ae 100644 --- a/storage/innobase/page/page0cur.cc +++ b/storage/innobase/page/page0cur.cc @@ -1176,9 +1176,15 @@ page_cur_parse_insert_rec( ut_memcpy(buf + mismatch_index, ptr, end_seg_len); if (page_is_comp(page)) { + /* Make rec_get_offsets() and rec_offs_make_valid() happy. */ + ut_d(rec_set_heap_no_new(buf + origin_offset, + PAGE_HEAP_NO_USER_LOW)); rec_set_info_and_status_bits(buf + origin_offset, info_and_status_bits); } else { + /* Make rec_get_offsets() and rec_offs_make_valid() happy. */ + ut_d(rec_set_heap_no_old(buf + origin_offset, + PAGE_HEAP_NO_USER_LOW)); rec_set_info_bits_old(buf + origin_offset, info_and_status_bits); } diff --git a/storage/innobase/rem/rem0rec.cc b/storage/innobase/rem/rem0rec.cc index d4d1a2bab14..c26614d5eae 100644 --- a/storage/innobase/rem/rem0rec.cc +++ b/storage/innobase/rem/rem0rec.cc @@ -589,8 +589,6 @@ rec_get_offsets_func( infimum and supremum record based on the heap number. */ ut_d(const bool is_user_rec = rec_get_heap_no_old(rec) >= PAGE_HEAP_NO_USER_LOW); - ut_ad(n <= ulint(index->n_fields + !leaf) || index->is_dummy - || dict_index_is_ibuf(index)); /* The infimum and supremum records carry 1 field. */ ut_ad(is_user_rec || n == 1); ut_ad(!is_user_rec || leaf || index->is_dummy @@ -1130,17 +1128,14 @@ rec_convert_dtuple_to_rec_old( /* Calculate the offset of the origin in the physical record */ rec = buf + rec_get_converted_extra_size(data_size, n_fields, n_ext); -#ifdef UNIV_DEBUG - /* Suppress Valgrind warnings of ut_ad() - in mach_write_to_1(), mach_write_to_2() et al. */ - memset(buf, 0xff, rec - buf + data_size); -#endif /* UNIV_DEBUG */ /* Store the number of fields */ rec_set_n_fields_old(rec, n_fields); /* Set the info bits of the record */ rec_set_info_bits_old(rec, dtuple_get_info_bits(dtuple) & REC_INFO_BITS_MASK); + /* Make rec_get_offsets() and rec_offs_make_valid() happy. */ + ut_d(rec_set_heap_no_old(rec, PAGE_HEAP_NO_USER_LOW)); /* Store the data and the offsets */ @@ -1254,6 +1249,8 @@ rec_convert_dtuple_to_rec_comp( temp = false; } } else { + /* Make rec_get_offsets() and rec_offs_make_valid() happy. */ + ut_d(rec_set_heap_no_new(rec, PAGE_HEAP_NO_USER_LOW)); nulls = rec - (REC_N_NEW_EXTRA_BYTES + 1); switch (UNIV_EXPECT(status, REC_STATUS_ORDINARY)) { @@ -1570,7 +1567,8 @@ rec_copy_prefix_to_dtuple_func( ulint* offsets = offsets_; rec_offs_init(offsets_); - ut_ad(is_leaf || n_fields <= index->n_uniq + 1); + ut_ad(is_leaf || n_fields + <= dict_index_get_n_unique_in_tree_nonleaf(index) + 1); offsets = rec_get_offsets(rec, index, offsets, is_leaf, n_fields, &heap); diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index 3694fe591ce..fe160b6b215 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -989,7 +989,7 @@ int_table_flags(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER | HA_DUPLICATE_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY | HA_FILE_BASED | HA_CAN_GEOMETRY | CANNOT_ROLLBACK_FLAG | HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS | HA_CAN_REPAIR | - HA_CAN_VIRTUAL_COLUMNS | + HA_CAN_VIRTUAL_COLUMNS | HA_CAN_EXPORT | HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT | HA_CAN_TABLES_WITHOUT_ROLLBACK), can_enable_indexes(1), bulk_insert_single_undo(BULK_INSERT_NONE) |