From 339edd462f519573b1c505fb99fdbfc3bc765b5a Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 24 Sep 2018 20:37:22 +0200 Subject: [PATCH 01/28] fixed auto-merge gone bad --- .../spider/r/spider_fixes_part.result | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/storage/spider/mysql-test/spider/r/spider_fixes_part.result b/storage/spider/mysql-test/spider/r/spider_fixes_part.result index d1a28d64a04..d2367af9bbd 100644 --- a/storage/spider/mysql-test/spider/r/spider_fixes_part.result +++ b/storage/spider/mysql-test/spider/r/spider_fixes_part.result @@ -263,54 +263,6 @@ a b c d e f 51ECF2C0CD3C48D99C91792E99D3C1A0 017B8A460DBC444682B791305EF75356 51041110620308 2018-08-02 13:48:29 510411 0 093B37A93A534DF883787AF5F6799674 996C7F14989D480589A553717D735E3E 51041110620302 2018-08-02 13:48:30 510411 0 -Test ORDER BY with LIMIT and OFFSET -CREATE TABLE ta_ob ( -a VARCHAR(50) NOT NULL, -b VARCHAR(50) NULL DEFAULT NULL, -c VARCHAR(100) NULL DEFAULT NULL, -d DATETIME(0) NULL DEFAULT NULL, -e INT(11) NOT NULL, -f INT(10) NULL DEFAULT NULL, -PRIMARY KEY (a, e) -) ENGINE=Spider COMMENT='database "auto_test_remote", table "ta_ob"' - PARTITION BY LIST COLUMNS (e) PARTITIONS 1 -(PARTITION pt1 values in (510411) COMMENT = 'srv "s_2_1"') -INSERT INTO ta_ob VALUES ('0B95CD65DF994BC9A09A6AABE53A2733', -'6CFED89FF6A84C7AA55C3C432663D094', -'51041110620304', '2018-08-02 13:41:13', -510411, 1); -INSERT INTO ta_ob VALUES ('15E8D55EF099443BAEE639E60A4650BD', -'879DC2A0B6AC46D9A62E8EA47E2970F2', -'51041110620301', NULL, -510411, 0); -INSERT INTO ta_ob VALUES ('51ECF2C0CD3C48D99C91792E99D3C1A0', -'017B8A460DBC444682B791305EF75356', -'51041110620308', '2018-08-02 13:48:29', -510411, 0); -INSERT INTO ta_ob VALUES ('093B37A93A534DF883787AF5F6799674', -'996C7F14989D480589A553717D735E3E', -'51041110620302', '2018-08-02 13:48:30', -510411, 0); -INSERT INTO ta_ob VALUES ('53F5266FB069499AB6234755CACA2583', -'017B8A460DBC444682B791305EF75356', -'51041110620308', '2018-08-02 13:48:28', -510411, 0); -INSERT INTO ta_ob VALUES ('56E59BC4BDC143868D4A219C2D07A24B', -'821E71E6ABB4404EBAA349BB681089F8', -'51041110620310', '2018-08-02 13:48:27', -510411, 0); -INSERT INTO ta_ob VALUES ('56B68DA68D6D4A04A08B453D09AD7B70', -'821E71E6ABB4404EBAA349BB681089F8', -'51041110620310', '2018-08-02 13:48:28', -510411, 0); -SELECT * FROM ta_ob WHERE c LIKE "%510411106%" AND e = 510411 AND f != 1 ORDER BY d,c LIMIT 5 OFFSET 1; -a b c d e f -56E59BC4BDC143868D4A219C2D07A24B 821E71E6ABB4404EBAA349BB681089F8 51041110620310 2018-08-02 13:48:27 510411 0 -53F5266FB069499AB6234755CACA2583 017B8A460DBC444682B791305EF75356 51041110620308 2018-08-02 13:48:28 510411 0 -56B68DA68D6D4A04A08B453D09AD7B70 821E71E6ABB4404EBAA349BB681089F8 51041110620310 2018-08-02 13:48:28 510411 0 -51ECF2C0CD3C48D99C91792E99D3C1A0 017B8A460DBC444682B791305EF75356 51041110620308 2018-08-02 13:48:29 510411 0 -093B37A93A534DF883787AF5F6799674 996C7F14989D480589A553717D735E3E 51041110620302 2018-08-02 13:48:30 510411 0 - deinit connection master_1; DROP DATABASE IF EXISTS auto_test_local; From 2dfb4a8abe3af501f8a6780ed782a2eee5e6f6d5 Mon Sep 17 00:00:00 2001 From: Elena Stepanova Date: Tue, 25 Sep 2018 02:45:40 +0300 Subject: [PATCH 02/28] Updated list of unstable tests for 10.2.18 --- mysql-test/unstable-tests | 283 ++++++++++++++++---------------------- 1 file changed, 119 insertions(+), 164 deletions(-) diff --git a/mysql-test/unstable-tests b/mysql-test/unstable-tests index 1f628ab240c..055196004d9 100644 --- a/mysql-test/unstable-tests +++ b/mysql-test/unstable-tests @@ -23,137 +23,126 @@ # ############################################################################## -# Based on bb-10.2-release f30c5af42e4e72a3a0d8d5fb7b9fc884a249f292 +# Based on 10.2 339edd462f519573b1c505fb99fdbfc3bc765b5a -main.alter_table : Modified in 10.2.16 main.alter_table_trans : MDEV-12084 - timeout main.analyze_stmt_slow_query_log : MDEV-12237 - Wrong result -main.assign_key_cache : Added in 10.0.36 -main.assign_key_cache_debug : Added in 10.0.36 main.auth_named_pipe : MDEV-14724 - System error 2 -main.auto_increment : Modified in 10.2.16 -main.bootstrap : Modified in 10.1.35, 10.2.17 -main.check : Modified in 10.2.16 +main.bootstrap : Modified in 10.2.17 main.check_constraint : Modified in 10.2.17 -main.connect_debug : Added in 10.0.36 +main.connect : MDEV-17282 - Wrong result main.connect2 : MDEV-13885 - Server crash +main.constraints : Modified in 10.2.18 main.count_distinct2 : MDEV-11768 - timeout main.create_delayed : MDEV-10605 - failed with timeout -main.create_or_replace : Modified in 10.2.16 +main.create_or_replace : Modified in 10.2.18 main.create_replace_tmp : Added in 10.2.17 -main.cte_nonrecursive : Modified in 10.2.17 -main.cte_recursive : Modified in 10.2.17 +main.cte_nonrecursive : Modified in 10.2.18 +main.cte_recursive : Modified in 10.2.18 main.cte_recursive_not_embedded : Added in 10.2.17 -main.ctype_binary : Modified in 10.1.35, 10.2.17 -main.ctype_eucjpms : Modified in 10.1.35, 10.2.17 -main.ctype_euckr : Modified in 10.1.35, 10.2.17 -main.ctype_gbk : Modified in 10.1.35, 10.2.17 -main.ctype_latin1 : Modified in 10.1.35, 10.2.17 -main.ctype_ucs : Modified in 10.1.35, 10.2.17 -main.ctype_ujis : Modified in 10.1.35, 10.2.17 +main.ctype_binary : Modified in 10.2.17 +main.ctype_eucjpms : Modified in 10.2.17 +main.ctype_euckr : Modified in 10.2.17 +main.ctype_gbk : Modified in 10.2.17 +main.ctype_latin1 : Modified in 10.2.17 +main.ctype_ucs : Modified in 10.2.17 +main.ctype_ujis : Modified in 10.2.17 main.ctype_upgrade : MDEV-16945 - Error upon mysql_upgrade -main.ctype_utf16le : Modified in 10.1.35, 10.2.17 -main.ctype_utf16 : MDEV-10675: timeout or extra warnings; modified in 10.1.35, 10.2.17 -main.ctype_utf32 : Modified in 10.1.35, 10.2.17 -main.ctype_utf8 : Modified in 10.1.35, 10.2.17 -main.ctype_utf8mb4 : Modified in 10.1.35, 10.2.17 +main.ctype_utf16le : Modified in 10.2.17 +main.ctype_utf16 : MDEV-10675: timeout or extra warnings; modified in 10.2.17 +main.ctype_utf32 : Modified in 10.2.17 +main.ctype_utf8 : Modified in 10.2.17 +main.ctype_utf8mb4 : Modified in 10.2.17 main.debug_sync : MDEV-10607 - internal error -main.derived : Modified in 10.1.35, 10.2.17 -main.derived_cond_pushdown : Modified in 10.2.17 +main.derived : Modified in 10.2.17 +main.derived_cond_pushdown : Modified in 10.2.18 main.derived_opt : MDEV-11768 - timeout -main.distinct : MDEV-14194 - Crash; modified in 10.2.16 +main.distinct : MDEV-14194 - Crash main.drop_bad_db_type : MDEV-15676 - Wrong result main.events_2 : MDEV-13277 - Crash main.events_bugs : MDEV-12892 - Crash main.events_restart : MDEV-12236 - Server shutdown problem main.events_slowlog : MDEV-12821 - Wrong result -main.explain_slowquerylog : Modified in 10.2.16 -main.func_json : Modified in 10.2.17 -main.gis : MDEV-13411 - wrong result on P8 -main.grant : Modified in 10.2.17 -main.grant2 : Modified in 10.2.16 -main.grant_not_windows : Added in 10.2.16 -main.having : Modified in 10.2.16 +main.flush : Modified in 10.2.18 +main.func_isnull : Modified in 10.2.18 +main.func_json : Modified in 10.2.18 +main.func_time : Modified in 10.2.18 +main.gis : MDEV-13411 - wrong result on P8; modified in 10.2.18 +main.gis-precise : Modified in 10.2.18 +main.grant : Modified in 10.2.18 +main.group_min_max : Modified in 10.2.18 main.host_cache_size_functionality : MDEV-10606 - sporadic failure on shutdown main.index_intersect_innodb : MDEV-10643 - failed with timeout main.index_merge_innodb : MDEV-7142 - Plan mismatch main.innodb_mysql_lock : MDEV-7861 - Wrong result -main.insert_select : Modified in 10.2.16 -main.join : Modified in 10.1.35, 10.2.17 -main.join_cache : Modified in 10.1.35, 10.2.17 -main.join_outer : Modified in 10.1.35, 10.2.17 +main.join : Modified in 10.2.18 +main.join_cache : Modified in 10.2.17 +main.join_outer : Modified in 10.2.17 main.kill-2 : MDEV-13257 - Wrong result main.kill_processlist-6619 : MDEV-10793 - Wrong result -main.limit : Modified in 10.2.16 main.log_slow : MDEV-13263 - Wrong result main.log_tables-big : MDEV-13408 - wrong result -main.max_statement_time : Modified in 10.1.35, 10.2.17 +main.max_statement_time : Modified in 10.2.17 main.mdev-504 : MDEV-15171 - warning main.mdev375 : MDEV-10607 - sporadic "can't connect" main.merge : MDEV-10607 - sporadic "can't connect" -main.myisam : Modified in 10.0.36 -main.mysql : Modified in 10.2.16 +main.mysql : Modified in 10.2.18 main.mysql_client_test_comp : MDEV-16641 - Error in exec main.mysql_client_test_nonblock : CONC-208 - Error on Power; MDEV-15096 - exec failed -main.mysql_cp932 : Modified in 10.2.16 +main.mysql_not_windows : Modified in 10.2.18 main.mysql_upgrade_noengine : MDEV-14355 - Wrong result main.mysql_upgrade_ssl : MDEV-13492 - Unknown SSL error -main.mysqldump : MDEV-14800 - Stack smashing detected; modified in 10.2.16 +main.mysqldump : MDEV-14800 - Stack smashing detected main.mysqld_option_err : MDEV-12747 - Timeout main.mysqlhotcopy_myisam : MDEV-10995 - Hang on debug -main.mysqlslap : Modified in 10.2.16 -main.mysqltest : MDEV-13887 - Wrong result +main.mysqlslap : MDEV-11801 - timeout +main.mysqltest : MDEV-9269 - fails on Alpha; MDEV-13887 - Wrong result main.mysqltest_tracking_info : Added in 10.2.17 -main.olap : Modified in 10.2.16 main.openssl_1 : MDEV-13492 - Unknown SSL error +main.openssl_6975 : MDEV-17184 - Failures with OpenSSL 1.1.1 main.order_by_optimizer_innodb : MDEV-10683 - Wrong result main.partition_debug_sync : MDEV-15669 - Deadlock found when trying to get lock main.partition_innodb_plugin : MDEV-12901 - Valgrind warnings -main.partition_open_files_limit : Modified in 10.2.16 -main.ps : MDEV-11017 - Wrong result; modified in 10.2.16 +main.ps : MDEV-11017 - Wrong result; modified in 10.2.18 main.query_cache : MDEV-16180 - Wrong result main.query_cache_debug : MDEV-15281 - Query cache is disabled +main.range : Modified in 10.2.18 main.range_vs_index_merge_innodb : MDEV-15283 - Server has gone away -main.read_only_innodb : Modified in 10.2.16 main.rename : Modified in 10.2.17 main.reset_connection : Added in 10.2.17 -main.selectivity : Modified in 10.2.16 +main.selectivity : Modified in 10.2.18 main.session_tracker_last_gtid : Added in 10.2.17 -main.set_password : Added in 10.2.16 main.set_statement : MDEV-13183 - Wrong result -main.show_grants_with_plugin-7985 : Modified in 10.2.16 main.shm : MDEV-12727 - Mismatch, ERROR 2013 main.show_explain : MDEV-10674 - Wrong result code -main.sp : MDEV-7866 - Mismatch; modified in 10.2.16 -main.sp-innodb : Modified in 10.0.36 +main.sp : MDEV-7866 - Mismatch; modified in 10.2.18 main.sp_notembedded : MDEV-10607 - internal error -main.sp-security : Modified in 10.2.16 +main.sp-security : MDEV-10607 - sporadic "can't connect"; modified in 10.2.18 +main.ssl : MDEV-17184 - Failures with OpenSSL 1.1.1 main.ssl_ca : MDEV-10895 - SSL connection error on Power main.ssl_cert_verify : MDEV-13735 - Server crash +main.ssl_cipher : MDEV-17184 - Failures with OpenSSL 1.1.1 main.ssl_connect : MDEV-13492 - Unknown SSL error main.ssl_timeout : MDEV-11244 - Crash -main.stat_tables : Modified in 10.1.35, 10.2.17 +main.stat_tables : Modified in 10.2.18 main.stat_tables_par : MDEV-13266 - Wrong result main.stat_tables_par_innodb : MDEV-14155 - Wrong rounding -main.statistics : Modified in 10.1.35, 10.2.17 -main.statistics_close : Modified in 10.2.16 +main.statistics : Modified in 10.2.17 main.status : MDEV-13255 - Wrong result -main.subselect : Modified in 10.1.35, 10.2.17 +main.subselect : Modified in 10.2.17 +main.subselect_extra_no_semijoin : Modified in 10.2.18 main.subselect_innodb : MDEV-10614 - Sporadic wrong results -main.subselect_sj : Modified in 10.0.36 -main.subselect_sj_mat : Modified in 10.1.35, 10.2.17 -main.subselect_sj2_mat : Modified in 10.1.35, 10.2.17 -main.subselect4 : Modified in 10.0.36 +main.subselect_sj_mat : Modified in 10.2.17 +main.subselect_sj2_mat : Modified in 10.2.17 main.tc_heuristic_recover : MDEV-14189 - Wrong result -main.trigger : Modified in 10.2.16 -main.type_bit : Modified in 10.2.16 -main.type_blob : MDEV-15195 - Wrong result; modified in 10.2.16 +main.type_blob : MDEV-15195 - Wrong result main.type_datetime : MDEV-14322 - wrong result main.type_datetime_hires : MDEV-10687 - Timeout -main.type_decimal : Modified in 10.2.16 -main.type_int : Modified in 10.2.16 -main.union : Modified in 10.1.35, 10.2.17 +main.type_float : Modified in 10.2.18 +main.union : Modified in 10.2.17 main.userstat : MDEV-12904 - SSL errors +main.win : Modified in 10.2.18 +main.win_lead_lag : Modified in 10.2.18 main.xa : MDEV-11769 - lock wait timeout #---------------------------------------------------------------- @@ -169,17 +158,18 @@ archive-test_sql_discovery.discover : MDEV-16817 - Table marked as crashed binlog.binlog_commit_wait : MDEV-10150 - Mismatch binlog.binlog_flush_binlogs_delete_domain : MDEV-14431 - Wrong exit code +binlog.binlog_incident : Modified in 10.1.36 binlog.binlog_killed : MDEV-12925 - Wrong result -binlog.binlog_tmp_table_row : Added in 10.1.35, 10.2.17 +binlog.binlog_tmp_table_row : Added in 10.2.17 binlog.binlog_xa_recover : MDEV-8517 - Extra checkpoint binlog.load_data_stm_view : MDEV-16948 - Wrong result #---------------------------------------------------------------- +binlog_encryption.binlog_incident : Modified in 10.1.36 binlog_encryption.binlog_xa_recover : MDEV-12908 - Extra checkpoint -binlog_encryption.encrypted_master : MDEV-14201 - Extra warnings; modified in 10.2.16 +binlog_encryption.encrypted_master : MDEV-14201 - Extra warnings binlog_encryption.encrypted_master_switch_to_unencrypted : MDEV-14190 - Can't init tc log -binlog_encryption.encrypted_slave : Modified in 10.2.16 binlog_encryption.encryption_combo : MDEV-14199 - Table is marked as crashed binlog_encryption.rpl_binlog_errors : MDEV-12742 - Crash binlog_encryption.rpl_checksum : MDEV-16951 - Wrong result @@ -198,6 +188,7 @@ binlog_encryption.rpl_typeconv : MDEV-14362 - Lost connection to MySQL serv connect.pivot : MDEV-14803 - Failed to discover table connect.vcol : MDEV-12374 - Fails on Windows +connect.xml2 : Modified in 10.2.18 connect.zip : MDEV-13884 - Wrong result #---------------------------------------------------------------- @@ -208,7 +199,6 @@ encryption.encrypt_and_grep : MDEV-13765 - Wrong result encryption.innochecksum : MDEV-13644 - Assertion failure encryption.innodb-checksum-algorithm : MDEV-12898 - Deadlock of threads; MDEV-16896 - Server crash encryption.innodb-compressed-blob : MDEV-14728 - Unable to get certificate -encryption.innodb-discard-import : Modified in 10.2.16 encryption.innodb_encrypt_log : MDEV-13725 - Wrong result encryption.innodb_encryption : MDEV-15675 - Timeout encryption.innodb-encryption-alter : MDEV-13566 - Lock wait timeout @@ -217,11 +207,12 @@ encryption.innodb_encryption-page-compression : MDEV-12630 - crash or asserti encryption.innodb_encryption_row_compressed : MDEV-16113 - Crash encryption.innodb_first_page : MDEV-10689 - Crash encryption.innodb-first-page-read : MDEV-14356 - Timeout in wait condition +encryption.innodb-force-corrupt : MDEV-17286 - SSL error encryption.innodb_lotoftables : MDEV-16111 - Wrong result +encryption.innodb_onlinealter_encryption : MDEV-17287 - SIGABRT on server restart encryption.innodb-page_encryption : MDEV-10641 - mutex problem encryption.innodb-read-only : MDEV-16563 - Crash on startup encryption.innodb-redo-badkey : MDEV-13893 - Page cannot be decrypted -encryption.innodb-redo-nokeys : Modified in 10.2.16 encryption.innodb-remove-encryption : MDEV-16493 - Timeout in wait condition encryption.innodb_scrub : MDEV-8139 - scrubbing tests need fixing encryption.innodb_scrub_background : MDEV-8139 - scrubbing tests need fixing @@ -236,7 +227,6 @@ engines/rr_trx.* : MDEV-10998 - Not maintained #---------------------------------------------------------------- -federated.assisted_discovery : Include file modified in 10.0.36 federated.federated_bug_35333 : MDEV-13410 - Wrong result federated.federated_bug_585688 : MDEV-14805 - Server crash, MDEV-12907 - Valgrind federated.federated_innodb : MDEV-10617 - Wrong checksum @@ -246,7 +236,6 @@ federated.federatedx : MDEV-10617 - Wrong checksum #---------------------------------------------------------------- -funcs_1.is_engines_federated : Include file modified in 10.0.36 funcs_1.memory_views : MDEV-11773 - timeout funcs_1.processlist_val_no_prot : MDEV-11223 - Wrong result funcs_1.processlist_val_ps : MDEV-12175 - Wrong plan @@ -261,88 +250,58 @@ funcs_2.myisam_charset : MDEV-11535 - Timeout galera.* : Suite is not stable yet galera_3nodes.* : Suite is not stable yet -galera.galera_applier_ftwrl_table_alter : MDEV-13738 - MySQL server has gone away -galera.galera_gcs_fc_limit : MDEV-13877 - Timeout -galera.galera_suspend_slave : MDEV-13873 - Wrong error code -galera.galera_toi_truncate : MDEV-13743 - query 'reap' succeeded -galera.galera_unicode_identifiers : MDEV-13871 - Unknown database -galera.galera_var_node_address : MDEV-13880 - Failed to start mysqld -galera.galera_wan : MDEV-13879 - Stray state UUID msg warnings -galera.galera_wsrep_log_conficts : MDEV-13874 - check-testcase failed -galera.partition : MDEV-13881 - Wrong result -galera.query_cache : MDEV-13883 - Wrong result -galera.MW-328A : MDEV-13876 - Wrong result - #---------------------------------------------------------------- gcol.gcol_rollback : MDEV-16954 - Unknown storage engine 'InnoDB' gcol.gcol_update : Include file modified in 10.2.17 gcol.innodb_virtual_basic : MDEV-16950 - Failing assertion -gcol.innodb_virtual_debug : Modified in 10.2.16 gcol.innodb_virtual_debug_purge : MDEV-16952 - Wrong result; modified in 10.2.17 gcol.innodb_virtual_index : Include file modified in 10.2.17 #---------------------------------------------------------------- -handler.ps : Added in 10.2.16 - -#---------------------------------------------------------------- - -heap.heap_auto_increment : Modified in 10.2.16 - -#---------------------------------------------------------------- - innodb.101_compatibility : MDEV-13891 - Wrong result innodb.alter_copy : MDEV-16181 - Assertion failure innodb.alter_crash : MDEV-16944 - The process cannot access the file -innodb.alter_foreign_crash : Added in 10.2.16 -innodb.alter_kill : Added in 10.2.16 -innodb.alter_partitioned_xa : Added in 10.0.36 -innodb.alter_rename_files : Added in 10.2.16 innodb.alter_kill : MDEV-16946 - Wrong result -innodb.analyze_table : Added in 10.2.16 innodb.autoinc_persist : MDEV-15282 - Assertion failure innodb.binlog_consistent : MDEV-10618 - Server fails to start innodb.doublewrite : MDEV-12905 - Server crash +innodb.foreign-keys : Modified in 10.2.18 +innodb.foreign_key : Modified in 10.2.18 innodb.group_commit_crash : MDEV-14191 - InnoDB registration failed innodb.group_commit_crash_no_optimize_thread : MDEV-13830 - Assertion failure innodb.index_merge_threshold : Include files modified in 10.2.17 innodb.innodb-32k-crash : MDEV-16953 - Corrupt log record found innodb.innodb-64k-crash : MDEV-13872 - Failure and crash on startup -innodb.innodb-alter : Modified in 10.0.36 innodb.innodb-alter-debug : MDEV-13182 - InnoDB: adjusting FSP_SPACE_FLAGS innodb.innodb-alter-table : MDEV-10619 - Testcase timeout innodb.innodb-alter-tempfile : MDEV-15285 - Table already exists -innodb.innodb-autoinc : Modified in 10.2.16 -innodb.innodb-blob : Modified in 10.2.16 +innodb.innodb-blob : MDEV-12053 - Client crash +innodb.innodb_buffer_pool_resize_with_chunks : MDEV-16964 - Assertion failure innodb.innodb_bug14147491 : MDEV-11808 - Index is corrupt innodb.innodb_bug30423 : MDEV-7311 - Wrong result innodb.innodb_bug48024 : MDEV-14352 - Assertion failure -innodb.innodb_bug54044 : Modified in 10.2.16 innodb.innodb_bug59641 : MDEV-13830 - Assertion failure innodb.innodb_bulk_create_index_replication : MDEV-15273 - Slave failed to start innodb.innodb_defrag_stats_many_tables : MDEV-14198 - Table is full -innodb.innodb_defragment_small : Modified in 10.2.16 innodb.innodb-fk : MDEV-13832 - Assertion failure on shutdown innodb.innodb-get-fk : MDEV-13276 - Server crash innodb.innodb-index-online : MDEV-14809 - Cannot save statistics innodb.innodb_information_schema : MDEV-8851 - Wrong result +innodb.innodb-lock : Modified in 10.2.18 innodb.innodb_max_recordsize_32k : MDEV-14801 - Operation failed innodb.innodb_max_recordsize_64k : MDEV-15203 - Wrong result -innodb.innodb-mdev7046 : Modified in 10.2.16 innodb.innodb_monitor : MDEV-10939 - Testcase timeout -innodb.innodb-online-alter-gis : Modified in 10.2.16 -innodb.innodb-page_compression_default : MDEV-13644 - Assertion failure; modified in 10.2.16 +innodb.innodb-page_compression_default : MDEV-13644 - Assertion failure innodb.innodb-page_compression_lzma : MDEV-14353 - Wrong result -innodb.innodb-page_compression_snappy : Modified in 10.2.16 innodb.innodb-page_compression_zip : MDEV-10641 - mutex problem -innodb.innodb_query_cache : Added in 10.2.16 innodb.innodb_stats : MDEV-10682 - wrong result innodb.innodb_stats_persistent : Include file modified in 10.2.17 innodb.innodb_stats_persistent_debug : MDEV-14801 - Operation failed innodb.innodb-table-online : MDEV-13894 - Wrong result innodb.innodb_sys_semaphore_waits : MDEV-10331 - Semaphore wait -innodb.innodb-wl5522 : Modified in 10.1.35, 10.2.17 +innodb.innodb-wl5522 : Modified in 10.2.17 innodb.innodb-wl5522-debug : MDEV-14200 - Wrong errno innodb.innodb_zip_innochecksum2 : MDEV-13882 - Extra warnings innodb.innodb_zip_innochecksum3 : MDEV-14486 - Resource temporarily unavailable @@ -355,9 +314,7 @@ innodb.purge_secondary : MDEV-15681 - Wrong result; include file innodb.purge_thread_shutdown : MDEV-13792 - Wrong result innodb.read_only_recovery : MDEV-13886 - Server crash innodb.recovery_shutdown : MDEV-15671 - Checksum mismatch in datafile -innodb.rename_table : Modified in 10.2.16 innodb.row_format_redundant : MDEV-15192 - Trying to access missing tablespace -innodb.sp_temp_table : MDEV-16647 - Could not remove temporary table innodb.table_definition_cache_debug : MDEV-14206 - Extra warning innodb.table_flags : MDEV-13572 - Wrong result innodb.temp_table_savepoint : MDEV-16182 - Wrong result @@ -367,14 +324,13 @@ innodb.update_time : MDEV-14804 - Wrong result innodb.undo_log : Include file modified in 10.2.17 innodb.xa_recovery : MDEV-15279 - mysqld got exception -innodb_fts.basic : Added in 10.0.36 -innodb_fts.fts_kill_query : Added in 10.1.35, 10.2.17 +innodb_fts.fts_kill_query : Added in 10.2.17 innodb_fts.innodb-fts-fic : MDEV-14154 - Assertion failure innodb_fts.innodb_fts_misc_debug : MDEV-14156 - Unexpected warning innodb_fts.innodb_fts_plugin : MDEV-13888 - Errors in server log innodb_fts.innodb_fts_stopword_charset : MDEV-13259 - Table crashed innodb_fts.sync : MDEV-14808 - Wrong result -innodb_fts.sync_ddl : Added in 10.1.35, 10.2.17 +innodb_fts.sync_ddl : Added in 10.2.17 innodb_gis.create_spatial_index : Modified in 10.2.17 innodb_gis.kill_server : MDEV-16941 - Checksum mismatch @@ -395,38 +351,43 @@ innodb_zip.wl6501_scale_1 : MDEV-13254 - Timeout, MDEV-14104 - Error #---------------------------------------------------------------- -maria.alter : Modified in 10.2.16 +maria.concurrent : Added in 10.2.18 +maria.create : Added in 10.2.18 maria.insert_select : MDEV-12757 - Timeout maria.insert_select-7314 : MDEV-16492 - Timeout -maria.lock : Modified in 10.2.16 -maria.maria : MDEV-14430 - Extra warning; modified in 10.2.16 -maria.maria-autoinc : Added in 10.2.16 +maria.maria : MDEV-14430 - Extra warning; modified in 10.2.18 #---------------------------------------------------------------- +mariabackup.absolute_ibdata_paths : Opt file modified in 10.2.18 mariabackup.apply-log-only : MDEV-14192 - Assertion failure -mariabackup.apply-log-only-incr : MDEV-14192 - Assertion failure; modified in 10.2.16 +mariabackup.apply-log-only-incr : MDEV-14192 - Assertion failure mariabackup.backup_ssl : MDEV-14192 - Assertion failure +mariabackup.create_during_backup : Added in 10.2.18 +mariabackup.create_with_data_directory_during_backup : Added in 10.2.18 mariabackup.data_directory : MDEV-15270 - Error on exec +mariabackup.drop_table_during_backup : Added in 10.2.18 mariabackup.full_backup : MDEV-16571 - Wrong result mariabackup.huge_lsn : MDEV-15662 - Sequence number is in the future mariabackup.incremental_backup : MDEV-14192 - Assertion failure +mariabackup.incremental_ddl_during_backup : Added in 10.2.18 mariabackup.incremental_encrypted : MDEV-15667 - Timeout; MDEV-14192 - Assertion failure; modified in 10.2.17 mariabackup.innodb_log_optimize_ddl : Added in 10.2.17 -mariabackup.lock_ddl_per_table : Modified in 10.2.16 -mariabackup.mdev-14447 : MDEV-15201 - Timeout; modified in 10.2.16 +mariabackup.mdev-14447 : MDEV-15201 - Timeout +mariabackup.mlog_index_load : Added in 10.2.18 +mariabackup.nolock_ddl_during_backup_end : Added in 10.2.18 mariabackup.partial_exclude : MDEV-15270 - Error on exec -mariabackup.partition_datadir : Modified in 10.2.16 -mariabackup.rename_during_mdl_lock : Added in 10.2.16 -mariabackup.unsupported_redo : Modified in 10.2.17 +mariabackup.recreate_table_during_backup : Added in 10.2.18 +mariabackup.rename_during_backup : Added in 10.2.18 +mariabackup.rename_during_mdl_lock : Modified in 10.2.18 +mariabackup.skip_innodb : Added in 10.2.18 +mariabackup.truncate_during_backup : Added in 10.2.18 +mariabackup.undo_space_id : Opt file modified in 10.2.18 +mariabackup.unsupported_redo : Modified in 10.2.18 mariabackup.xbstream : MDEV-14192 - Crash -mariabackup.xb_aws_key_management : MDEV-15680 - Error: xtrabackup_copy_logfile() failed mariabackup.xb_page_compress : MDEV-14810 - status: 1, errno: 11 mariabackup.xb_partition : MDEV-14192 - Assertion failure mariabackup.xb_compressed_encrypted : MDEV-14812 - Segmentation fault -mariabackup.xb_rocksdb : Added in 10.2.16 -mariabackup.xb_rocksdb_datadir : Added in 10.2.16 -mariabackup.xb_rocksdb_datadir_debug : Added in 10.2.16 #---------------------------------------------------------------- @@ -460,7 +421,7 @@ multi_source.status_vars : MDEV-4632 - failed while waiting for Slave_ #---------------------------------------------------------------- -parts.alter_data_directory_innodb : Added in 10.1.35, 10.2.17 +parts.alter_data_directory_innodb : Added in 10.2.17 parts.partition_alter2_2_maria : MDEV-14364 - Lost connection to MySQL server during query parts.partition_auto_increment_archive : MDEV-16491 - Marked as crashed and should be repaired parts.partition_auto_increment_maria : MDEV-14430 - Extra warning @@ -468,7 +429,9 @@ parts.partition_debug_innodb : MDEV-10891 - Can't create UNIX socket; MD parts.partition_exch_qa_10 : MDEV-11765 - wrong result parts.partition_innodb_status_file : MDEV-12901 - Valgrind parts.partition_special_innodb : MDEV-16942 - Timeout -parts.truncate_locked : Added in 10.1.35, 10.2.17 +parts.show_create : Modified in 10.2.18 +parts.truncate_locked : Added in 10.2.17 +parts.update_and_cache : Added in 10.2.18 #---------------------------------------------------------------- @@ -479,6 +442,7 @@ percona.* : MDEV-10997 - Not maintained perfschema.bad_option_1 : MDEV-13892 - Timeout perfschema.bad_option_3 : MDEV-12728 - Timeout on Power perfschema.bad_option_5 : MDEV-14197 - Timeout +perfschema.connect_attrs : MDEV-17283 - Wrong result perfschema.dml_file_instances : MDEV-15179 - Wrong result perfschema.func_file_io : MDEV-5708 - fails for s390x perfschema.func_mutex : MDEV-5708 - fails for s390x @@ -486,7 +450,6 @@ perfschema.hostcache_ipv4_addrinfo_again_allow : MDEV-12759 - Crash perfschema.hostcache_ipv6_addrinfo_again_allow : MDEV-12752 - Crash perfschema.hostcache_ipv6_addrinfo_bad_allow : MDEV-13260 - Crash perfschema.hostcache_ipv6_ssl : MDEV-10696 - Crash -perfschema.partition : Added in 10.2.16 perfschema.privilege_table_io : MDEV-13184 - Extra lines perfschema.rpl_gtid_func : MDEV-16897 - Wrong result perfschema.socket_connect : MDEV-15677 - Wrong result @@ -509,28 +472,29 @@ plugins.thread_pool_server_audit : MDEV-14295 - Wrong result #---------------------------------------------------------------- +rocksdb.* : Tests are unstable + rocksdb.2pc_group_commit : MDEV-14455 - Wrong result rocksdb.add_index_inplace : MDEV-16648 - Server crash -rocksdb.allow_no_primary_key : MDEV-16634 - Server crash; modified in 10.2.16 +rocksdb.allow_no_primary_key : MDEV-16634 - Server crash rocksdb.allow_no_primary_key_with_sk : MDEV-16639 - Server crash -rocksdb.analyze_table : Modified in 10.2.16 rocksdb.autoinc_crash_safe_partition : MDEV-16639, MDEV-16637 - Server crash -rocksdb.autoinc_debug : MDEV-16203 - Wrong result rocksdb.autoinc_secondary : MDEV-16638 - Server crash rocksdb.autoinc_vars_thread : MDEV-16573 - Debug sync timed out rocksdb.bloomfilter2 : MDEV-16564 - Wrong result rocksdb.bloomfilter4 : MDEV-16649 - Server crash -rocksdb.bulk_load_errors : MDEV-16575 - Wrong result -rocksdb.check_ignore_unknown_options : Modified in 10.2.16 rocksdb.deadlock : MDEV-16033 - Timeout rocksdb.drop_index_inplace : MDEV-14162 - Crash on shutdown rocksdb.drop_table : MDEV-14308 - Timeout rocksdb.drop_table2 : MDEV-16631 - Server crash rocksdb.drop_table3 : MDEV-16949 - Server crash -rocksdb.issue255 : MDEV-16577 - Wrong plan; modified in 10.2.16 +rocksdb.dup_key_update : MDEV-17284 - Wrong result +rocksdb.issue255 : MDEV-16577 - Wrong plan +rocksdb.locking_issues : MDEV-14464 - Wrong result rocksdb.mariadb_ignore_dirs : MDEV-16639 - Server crash -rocksdb.mariadb_port_fixes : MDEV-16387 - Wrong plan; modified in 10.2.16 +rocksdb.mariadb_port_fixes : MDEV-16387 - Wrong plan rocksdb.max_open_files : MDEV-16639 - Server crash +rocksdb.perf_context : MDEV-17285 - Wrong results rocksdb.read_only_tx : MDEV-16565 - Server crash rocksdb.rocksdb_cf_options : MDEV-16639 - Server crash rocksdb.rocksdb_cf_per_partition : MDEV-16636 - Wrong result @@ -542,25 +506,21 @@ rocksdb.ttl_secondary : MDEV-16943 - Timeout rocksdb.ttl_secondary_read_filtering : MDEV-16560 - Wrong result rocksdb.unique_check : MDEV-16576 - Wrong errno rocksdb.use_direct_reads_writes : MDEV-16646 - Server crash +rocksdb.write_sync : MDEV-16965 - WRong result rocksdb_rpl.mdev12179 : MDEV-16632 - Server crash rocksdb_rpl.rpl_binlog_xid_count : MDEV-16644 - Server crash -rocksdb_sys_vars.rocksdb_remove_mariabackup_checkpoint_basic : Added in 10.2.16 rocksdb_sys_vars.rocksdb_update_cf_options_basic : MDEV-16955 - Bytes lost rocksdb_sys_vars.rocksdb_update_cf_options : MDEV-16955 - Bytes lost #---------------------------------------------------------------- -roles.acl_load_mutex-5170 : Modified in 10.2.16 roles.create_and_grant_role : MDEV-11772 - wrong result -roles.grant_revoke_current : Modified in 10.2.16 -roles.set_default_role_ps-6960 : Modified in 10.2.16 #---------------------------------------------------------------- rpl.last_insert_id : MDEV-10625 - warnings in error log -rpl.rename : Added in 10.2.16 rpl.rpl_15867 : Added in 10.2.17 rpl.rpl_auto_increment : MDEV-10417 - Fails on Mips rpl.rpl_auto_increment_bug45679 : MDEV-10417 - Fails on Mips @@ -570,12 +530,12 @@ rpl.rpl_binlog_index : MDEV-9501 - Failed registering on master rpl.rpl_colSize : MDEV-16112 - Server crash rpl.rpl_ctype_latin1 : MDEV-14813 - Wrong result on Mac rpl.rpl_ddl : MDEV-10417 - Fails on Mips -rpl.rpl_do_grant : Modified in 10.2.16 rpl.rpl_domain_id_filter_io_crash : MDEV-12729 - Timeout in include file, MDEV-13677 - Server crash rpl.rpl_domain_id_filter_restart : MDEV-10684 - Wrong result rpl.rpl_drop_db_fail : MDEV-16898 - Slave fails to start rpl.rpl_extra_col_master_innodb : MDEV-16570 - Extra warning rpl.rpl_extra_col_master_myisam : MDEV-14203 - Extra warning +rpl.rpl_foreign_key_innodb : Modified in 10.2.18 rpl.rpl_gtid_basic : MDEV-10681 - server startup problem rpl.rpl_gtid_crash : MDEV-9501 - Failed registering on master, MDEV-13643 - Lost connection rpl.rpl_gtid_delete_domain : MDEV-14463 - Timeout @@ -593,7 +553,6 @@ rpl.rpl_insert_ignore : MDEV-14365 - Lost connection to MySQL se rpl.rpl_invoked_features : MDEV-10417 - Fails on Mips rpl.rpl_mariadb_slave_capability : MDEV-11018 - Extra lines in binlog rpl.rpl_mdev6020 : MDEV-15272 - Server crash -rpl.rpl_mixed_implicit_commit_binlog : Included file modified in 10.0.36 rpl.rpl_mixed_mixing_engines : MDEV-14489 - Sync slave with master failed rpl.rpl_non_direct_row_mixing_engines : MDEV-16561 - Timeout in master_pos_wait rpl.rpl_non_direct_mixed_mixing_engines : MDEV-14489 - Sync slave with master failed @@ -602,9 +561,9 @@ rpl.rpl_parallel : MDEV-10653 - Timeouts rpl.rpl_parallel_conflicts : MDEV-15272 - Server crash rpl.rpl_parallel_mdev6589 : MDEV-12979 - Assertion failure rpl.rpl_parallel_multilevel2 : MDEV-14723 - Timeout -rpl.rpl_parallel_optimistic : MDEV-15278 - Failed to sync with master; modified in 10.2.16 +rpl.rpl_parallel_optimistic : MDEV-15278 - Failed to sync with master rpl.rpl_parallel_optimistic_nobinlog : MDEV-15278 - Failed to sync with master -rpl.rpl_parallel_retry : MDEV-11119 - Crash +rpl.rpl_parallel_retry : MDEV-11119 - Crash; MDEV-17109 - Timeout rpl.rpl_parallel_temptable : MDEV-10356 - Crash rpl.rpl_partition_innodb : MDEV-10417 - Fails on Mips rpl.rpl_password_boundaries : MDEV-11534 - Slave IO warnings @@ -615,9 +574,9 @@ rpl.rpl_row_drop_create_temp_table : MDEV-14487 - Wrong result rpl.rpl_row_img_blobs : MDEV-13875 - command "diff_files" failed rpl.rpl_row_img_eng_min : MDEV-13875 - diff_files failed rpl.rpl_row_img_eng_noblob : MDEV-13875 - command "diff_files" failed -rpl.rpl_row_implicit_commit_binlog : Included file modified in 10.0.36 rpl.rpl_row_index_choice : MDEV-15196 - Slave crash rpl.rpl_row_sp001 : MDEV-9329 - Fails on Ubuntu/s390x +rpl.rpl_row_spatial : Added in 10.2.18 rpl.rpl_semi_sync : MDEV-11220 - Wrong result rpl.rpl_semi_sync_after_sync : MDEV-14366 - Wrong result rpl.rpl_semi_sync_after_sync_row : MDEV-14366 - Wrong result @@ -633,7 +592,6 @@ rpl.rpl_slow_query_log : MDEV-13250 - Test abort rpl.rpl_sp_effects : MDEV-13249 - Crash rpl.rpl_start_stop_slave : MDEV-13567 - Sync slave timeout rpl.rpl_stm_000001 : Modified in 10.2.17 -rpl.rpl_stm_implicit_commit_binlog : Included file modified in 10.0.36 rpl.rpl_stm_mixing_engines : MDEV-14489 - Sync slave with master failed rpl.rpl_stm_multi_query : MDEV-9501 - Failed registering on master rpl.rpl_stm_relay_ign_space : MDEV-14360 - Test assertion @@ -681,14 +639,16 @@ sys_vars.innodb_buffer_pool_dump_at_shutdown_basic : MDEV-14280 - Unexpected err sys_vars.innodb_log_optimize_ddl_basic : Added in 10.2.17 sys_vars.keep_files_on_create_basic : MDEV-10676 - timeout sys_vars.log_slow_admin_statements_func : MDEV-12235 - Server crash -sys_vars.maximum_basic : Modified in 10.2.16 sys_vars.rpl_init_slave_func : MDEV-10149 - Test assertion sys_vars.slow_query_log_func : MDEV-14273 - Wrong result sys_vars.thread_cache_size_func : MDEV-11775 - Wrong result sys_vars.wait_timeout_func : MDEV-12896 - Wrong result +sys_vars.wsrep_start_position_basic : Modified in 10.2.18 #---------------------------------------------------------------- +tokudb.* : suite.pm and multiple modifications in 10.2.18 + tokudb.change_column_all_1000_10 : MDEV-12640 - Lost connection tokudb.change_column_bin : MDEV-12640 - Lost connection tokudb.change_column_char : MDEV-12822 - Lost connection @@ -712,11 +672,13 @@ tokudb.type_datetime : MDEV-15193 - Wrong result tokudb_alter_table.hcad_all_add2 : MDEV-15269 - Timeout +tokudb_bugs.alter_table_comment_rebuild_data : Added in 10.1.36 tokudb_bugs.checkpoint_lock : MDEV-10637 - Wrong processlist output tokudb_bugs.checkpoint_lock_3 : MDEV-10637 - Wrong processlist output tokudb_bugs.frm_store : MDEV-12823 - Valgrind tokudb_bugs.frm_store2 : MDEV-12823 - Valgrind tokudb_bugs.frm_store3 : MDEV-12823 - Valgrind +tokudb_bugs.PS-3773 : Added in 10.1.36 tokudb_bugs.xa : MDEV-11804 - Lock wait timeout tokudb_bugs.xa-3 : MDEV-16953 - Corrupt log record found @@ -730,8 +692,6 @@ rpl-tokudb.* : MDEV-14354 - Tests fail with tcmalloc #---------------------------------------------------------------- -unit.* : suite.pm modified in 10.1.35 - unit.conc_basic-t : MDEV-15286 - not ok 7 - test_reconnect_maxpackage unit.conc_misc : MDEV-14811 - not ok 12 - test_conc49 unit.conc_ps_bugs : MDEV-13252 - not ok 44 test_bug4236 @@ -741,20 +701,15 @@ unit.my_atomic : MDEV-15670 - Signal 11 thrown #---------------------------------------------------------------- -vcol.binlog : Added in 10.2.16 -vcol.index : Added in 10.2.16 +vcol.index : Modified in 10.2.18 vcol.not_supported : MDEV-10639 - Testcase timeout -vcol.update : Modified in 10.2.16 -vcol.update_binlog : Added in 10.2.16 vcol.vcol_keys_innodb : MDEV-10639 - Testcase timeout -vcol.vcol_misc : MDEV-16651 - Wrong error message; modified in 10.2.16 +vcol.vcol_misc : MDEV-16651 - Wrong error message #---------------------------------------------------------------- wsrep.foreign_key : MDEV-14725 - WSREP has not yet prepared node wsrep.mdev_6832 : MDEV-14195 - Check testcase failed -wsrep.pool_of_threads : MDEV-12234 - GLIBCXX_3.4.20 not found -wsrep.variables : MDEV-14311 - Wrong result; modified in 10.2.16 +wsrep.variables : MDEV-14311 - Wrong result; modified in 10.2.18 wsrep_info.plugin : MDEV-13569 - No nodes coming from prim view - From d913f6611cb8d42d551f65a0940b478662ed58df Mon Sep 17 00:00:00 2001 From: Daniel Bartholomew Date: Tue, 25 Sep 2018 10:06:06 -0400 Subject: [PATCH 03/28] bump the VERSION --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index e9c66ed8d77..7454014f67c 100644 --- a/VERSION +++ b/VERSION @@ -1,3 +1,3 @@ MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MINOR=2 -MYSQL_VERSION_PATCH=18 +MYSQL_VERSION_PATCH=19 From f77071e0e8cd5a26de313e038c88c2bc49613043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 26 Sep 2018 16:58:42 +0300 Subject: [PATCH 04/28] Remove unused code Some global function definitions were orphaned by a bug fix in MySQL 5.7.14 more than 2 years ago. Remove them. https://github.com/mysql/mysql-server/commit/5ed18d823c4fad30b75ab4b68c7327c1b95821d3 --- storage/innobase/dict/dict0crea.cc | 117 ----------------------------- 1 file changed, 117 deletions(-) diff --git a/storage/innobase/dict/dict0crea.cc b/storage/innobase/dict/dict0crea.cc index 34cd627cdfd..594528ccbb1 100644 --- a/storage/innobase/dict/dict0crea.cc +++ b/storage/innobase/dict/dict0crea.cc @@ -2072,86 +2072,6 @@ dict_create_add_foreign_to_dictionary( DBUG_RETURN(error); } -/** Check whether a column is in an index by the column name -@param[in] col_name column name for the column to be checked -@param[in] index the index to be searched -@return true if this column is in the index, otherwise, false */ -static -bool -dict_index_has_col_by_name( -/*=======================*/ - const char* col_name, - const dict_index_t* index) -{ - for (ulint i = 0; i < index->n_fields; i++) { - dict_field_t* field = dict_index_get_nth_field(index, i); - - if (strcmp(field->name, col_name) == 0) { - return(true); - } - } - return(false); -} - -/** Check whether the foreign constraint could be on a column that is -part of a virtual index (index contains virtual column) in the table -@param[in] fk_col_name FK column name to be checked -@param[in] table the table -@return true if this column is indexed with other virtual columns */ -bool -dict_foreign_has_col_in_v_index( - const char* fk_col_name, - const dict_table_t* table) -{ - /* virtual column can't be Primary Key, so start with secondary index */ - for (dict_index_t* index = dict_table_get_next_index( - dict_table_get_first_index(table)); - index; - index = dict_table_get_next_index(index)) { - - if (dict_index_has_virtual(index)) { - if (dict_index_has_col_by_name(fk_col_name, index)) { - return(true); - } - } - } - - return(false); -} - - -/** Check whether the foreign constraint could be on a column that is -a base column of some indexed virtual columns. -@param[in] col_name column name for the column to be checked -@param[in] table the table -@return true if this column is a base column, otherwise, false */ -bool -dict_foreign_has_col_as_base_col( - const char* col_name, - const dict_table_t* table) -{ - /* Loop through each virtual column and check if its base column has - the same name as the column name being checked */ - for (ulint i = 0; i < table->n_v_cols; i++) { - dict_v_col_t* v_col = dict_table_get_nth_v_col(table, i); - - /* Only check if the virtual column is indexed */ - if (!v_col->m_col.ord_part) { - continue; - } - - for (ulint j = 0; j < v_col->num_base; j++) { - if (strcmp(col_name, dict_table_get_col_name( - table, - v_col->base_col[j]->ind)) == 0) { - return(true); - } - } - } - - return(false); -} - /** Check if a foreign constraint is on the given column name. @param[in] col_name column name to be searched for fk constraint @param[in] table table to which foreign key constraint belongs @@ -2226,43 +2146,6 @@ dict_foreigns_has_s_base_col( return(false); } -/** Check if a column is in foreign constraint with CASCADE properties or -SET NULL -@param[in] table table -@param[in] fk_col_name name for the column to be checked -@return true if the column is in foreign constraint, otherwise, false */ -bool -dict_foreigns_has_this_col( - const dict_table_t* table, - const char* col_name) -{ - dict_foreign_t* foreign; - const dict_foreign_set* local_fk_set = &table->foreign_set; - - for (dict_foreign_set::const_iterator it = local_fk_set->begin(); - it != local_fk_set->end(); - ++it) { - foreign = *it; - ut_ad(foreign->id != NULL); - ulint type = foreign->type; - - type &= ~(DICT_FOREIGN_ON_DELETE_NO_ACTION - | DICT_FOREIGN_ON_UPDATE_NO_ACTION); - - if (type == 0) { - continue; - } - - for (ulint i = 0; i < foreign->n_fields; i++) { - if (strcmp(foreign->foreign_col_names[i], - col_name) == 0) { - return(true); - } - } - } - return(false); -} - /** Adds the given set of foreign key objects to the dictionary tables in the database. This function does not modify the dictionary cache. The caller must ensure that all foreign key objects contain a valid constraint From 0f709912fbbdbaf4b2f2cc7a3e46528cba25c401 Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Thu, 27 Sep 2018 17:57:27 +0300 Subject: [PATCH 05/28] MDEV-17306 rw_lock_x_lock_wait_func() double increments rw_x_spin_round_count rw_lock_x_lock_wait_func(): remove duplicated logic added in incorrect merge Affected counters are affected by InnoDB monitor. But they aren't stable and thus can not be realiably tested. --- storage/innobase/sync/sync0rw.cc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/storage/innobase/sync/sync0rw.cc b/storage/innobase/sync/sync0rw.cc index 0ad646f06b0..22d94af0a6c 100644 --- a/storage/innobase/sync/sync0rw.cc +++ b/storage/innobase/sync/sync0rw.cc @@ -495,14 +495,6 @@ rw_lock_x_lock_wait_func( lock->count_os_wait += static_cast(count_os_wait); rw_lock_stats.rw_x_os_wait_count.add(count_os_wait); } - - rw_lock_stats.rw_x_spin_round_count.add(n_spins); - - if (count_os_wait > 0) { - lock->count_os_wait += - static_cast(count_os_wait); - rw_lock_stats.rw_x_os_wait_count.add(count_os_wait); - } } #ifdef UNIV_DEBUG From b4e841648c1fe017a03846d9580629ec8b3fb9fd Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Mon, 1 Oct 2018 13:23:33 +0530 Subject: [PATCH 06/28] MDEV-17215 Assertion `rw_lock_own(dict_operation_lock, RW_LOCK_S) || node->vcol_info.is_used()' failed - Purge thread can acquire mdl lock while initializing the mysql template. Set the vcol_info information before acquiring mdl lock. - Purge thread doesn't need to use the virtual column info even though it is requested. In that case, reset the virtual column info. --- storage/innobase/handler/ha_innodb.cc | 12 ++++++------ storage/innobase/include/row0mysql.h | 7 +++---- storage/innobase/row/row0purge.cc | 13 +++++++++++-- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 738cf946c6e..b7d3c6da099 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -21458,13 +21458,12 @@ static TABLE* innodb_find_table_for_vc(THD* thd, dict_table_t* table) } /** Get the computed value by supplying the base column values. -@param[in,out] table table whose virtual column template to be built */ -void -innobase_init_vc_templ( - dict_table_t* table) +@param[in,out] table table whose virtual column + template to be built */ +TABLE* innobase_init_vc_templ(dict_table_t* table) { if (table->vc_templ != NULL) { - return; + return NULL; } table->vc_templ = UT_NEW_NOKEY(dict_vcol_templ_t()); @@ -21473,12 +21472,13 @@ innobase_init_vc_templ( ut_ad(mysql_table); if (!mysql_table) { - return; + return NULL; } mutex_enter(&dict_sys->mutex); innobase_build_v_templ(mysql_table, table, table->vc_templ, NULL, true); mutex_exit(&dict_sys->mutex); + return mysql_table; } /** Change dbname and table name in table->vc_templ. diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index 50b0f75a689..a16fd30c6ea 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -915,10 +915,9 @@ innobase_get_computed_value( dict_foreign_t* foreign); /** Get the computed value by supplying the base column values. -@param[in,out] table the table whose virtual column template to be built */ -void -innobase_init_vc_templ( - dict_table_t* table); +@param[in,out] table the table whose virtual column + template to be built */ +TABLE* innobase_init_vc_templ(dict_table_t* table); /** Change dbname and table name in table->vc_templ. @param[in,out] table the table whose virtual column template diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc index bfc82ef16ce..b439b593e33 100644 --- a/storage/innobase/row/row0purge.cc +++ b/storage/innobase/row/row0purge.cc @@ -375,6 +375,13 @@ retry_purge_sec: ut_ad(mtr.has_committed()); + /* If the virtual column info is not used then reset the virtual column + info. */ + if (node->vcol_info.is_requested() + && !node->vcol_info.is_used()) { + node->vcol_info.reset(); + } + if (store_cur && !row_purge_restore_vsec_cur( node, index, sec_pcur, sec_mtr, is_tree)) { return false; @@ -1017,8 +1024,10 @@ try_again: goto try_again; } - /* Initialize the template for the table */ - innobase_init_vc_templ(node->table); + node->vcol_info.set_requested(); + node->vcol_info.set_used(); + node->vcol_info.set_table(innobase_init_vc_templ(node->table)); + node->vcol_info.set_used(); } clust_index = dict_table_get_first_index(node->table); From f67e050430d6d7e577a025e7bf0488bee0a8e450 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 3 Oct 2018 14:29:16 +0100 Subject: [PATCH 07/28] Update libmariadb --- cmake/submodules.cmake | 6 ++++++ libmariadb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cmake/submodules.cmake b/cmake/submodules.cmake index 672a3affc1d..4181f4cd01e 100644 --- a/cmake/submodules.cmake +++ b/cmake/submodules.cmake @@ -1,4 +1,10 @@ # update submodules automatically + +OPTION(UPDATE_SUBMODULES "Update submodules automatically" ON) +IF(NOT UPDATE_SUBMODULES) + RETURN() +ENDIF() + IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git") EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" config --get cmake.update-submodules WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" diff --git a/libmariadb b/libmariadb index fb3bc6b171d..5d5c1ba5566 160000 --- a/libmariadb +++ b/libmariadb @@ -1 +1 @@ -Subproject commit fb3bc6b171d0c5fb4829f50c03c3fe3f5919a35b +Subproject commit 5d5c1ba55664f23cf474ff6278e467f85ada1a0f From 753117fed043ac3200093c2dc28161ebce2cd04b Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 3 Oct 2018 16:49:19 +0100 Subject: [PATCH 08/28] AWS KMS plugin : more detailed message when API calls fail. Output API function name, exception name, exception text --- .../aws_key_management_plugin.cc | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/plugin/aws_key_management/aws_key_management_plugin.cc b/plugin/aws_key_management/aws_key_management_plugin.cc index 60ca6fd1ff3..2c89010c5a7 100644 --- a/plugin/aws_key_management/aws_key_management_plugin.cc +++ b/plugin/aws_key_management/aws_key_management_plugin.cc @@ -106,6 +106,14 @@ static std::mutex mtx; static Aws::KMS::KMSClient *client; +static void print_kms_error(const char *func, const Aws::Client::AWSError& err) +{ + my_printf_error(ER_UNKNOWN_ERROR, + "AWS KMS plugin : KMS Client API '%s' failed : %s - %s", + ME_ERROR_LOG, + func, err.GetExceptionName().c_str(), err.GetMessage().c_str()); +} + #if WITH_AWS_MOCK /* Mock routines to test plugin without actual AWS KMS interaction @@ -127,7 +135,7 @@ static int mock_generate_encrypted_key(Aws::Utils::ByteBuffer *result) } -static int mock_decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* output, Aws::String *errmsg) +static int mock_decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* output) { /* We do not encrypt or decrypt in mock mode.*/ *output = input; @@ -401,14 +409,14 @@ static unsigned int get_latest_key_version_nolock(unsigned int key_id) } /* Decrypt Byte buffer with AWS. */ -static int aws_decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* output, Aws::String *errmsg) +static int aws_decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* output) { DecryptRequest request; request.SetCiphertextBlob(input); DecryptOutcome outcome = client->Decrypt(request); if (!outcome.IsSuccess()) { - *errmsg = outcome.GetError().GetMessage(); + print_kms_error("Decrypt", outcome.GetError()); return -1; } *output= outcome.GetResult().GetPlaintext(); @@ -416,13 +424,13 @@ static int aws_decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* out } -static int decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* output, Aws::String *errmsg) +static int decrypt(Aws::Utils::ByteBuffer input, Aws::Utils::ByteBuffer* output) { #if WITH_AWS_MOCK if(mock) - return mock_decrypt(input,output, errmsg); + return mock_decrypt(input,output); #endif - return aws_decrypt(input, output, errmsg); + return aws_decrypt(input, output); } /* @@ -452,12 +460,9 @@ static int read_and_decrypt_key(const char *path, KEY_INFO *info) Aws::Utils::ByteBuffer input((unsigned char *)contents.data(), pos); Aws::Utils::ByteBuffer plaintext; - Aws::String errmsg; - if (decrypt(input, &plaintext, &errmsg)) + if (decrypt(input, &plaintext)) { - my_printf_error(ER_UNKNOWN_ERROR, "AWS KMS plugin: Decrypt failed for %s : %s", ME_ERROR_LOG, path, - errmsg.c_str()); return -1; } @@ -491,9 +496,7 @@ int aws_generate_encrypted_key(Aws::Utils::ByteBuffer *result) outcome= client->GenerateDataKeyWithoutPlaintext(request); if (!outcome.IsSuccess()) { - my_printf_error(ER_UNKNOWN_ERROR, "AWS KMS plugin : GenerateDataKeyWithoutPlaintext failed : %s - %s", ME_ERROR_LOG, - outcome.GetError().GetExceptionName().c_str(), - outcome.GetError().GetMessage().c_str()); + print_kms_error("GenerateDataKeyWithoutPlaintext", outcome.GetError()); return(-1); } *result = outcome.GetResult().GetCiphertextBlob(); From d7b293be87431a3293543372394d214913fd6615 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Thu, 4 Oct 2018 18:38:01 +0400 Subject: [PATCH 09/28] MDEV-17374 Shift/reduce conflicts because of SOUNDS_SYM, ESCAPE_SYM, USER_SYM not given precedence --- sql/sql_yacc.yy | 26 ++++++++++++++++++++------ sql/sql_yacc_ora.yy | 26 ++++++++++++++++++++------ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index f3f232493f3..2669538761b 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -888,10 +888,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %parse-param { THD *thd } %lex-param { THD *thd } /* - Currently there are 62 shift/reduce conflicts. + Currently there are 56 shift/reduce conflicts. We should not introduce new conflicts any more. */ -%expect 62 +%expect 56 /* Comments for TOKENS. @@ -1650,6 +1650,16 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %left JOIN_SYM INNER_SYM STRAIGHT_JOIN CROSS LEFT RIGHT /* A dummy token to force the priority of table_ref production in a join. */ %left TABLE_REF_PRIORITY + +/* + Give ESCAPE (in LIKE) a very low precedence. + This allows the concatenation operator || to be used on the right + side of "LIKE" with sql_mode=PIPES_AS_CONCAT (without ORACLE): + SELECT 'ab' LIKE 'a'||'b'||'c'; +*/ +%left PREC_BELOW_ESCAPE +%left ESCAPE_SYM + %left SET_VAR %left OR_SYM OR2_SYM %left XOR @@ -1659,7 +1669,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %left NOT_SYM %left BETWEEN_SYM CASE_SYM WHEN_SYM THEN_SYM ELSE -%left '=' EQUAL_SYM GE '>' LE '<' NE IS LIKE REGEXP IN_SYM +%left '=' EQUAL_SYM GE '>' LE '<' NE IS LIKE SOUNDS_SYM REGEXP IN_SYM %left '|' %left '&' %left SHIFT_LEFT SHIFT_RIGHT @@ -1691,6 +1701,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); SELECT system FROM t1; ALTER TABLE DROP SYSTEM VERSIONIONG; + - USER: identifier, user: + SELECT user FROM t1; + KILL USER foo; + Note, we need here only tokens that cause shirt/reduce conflicts with keyword identifiers. For example: opt_clause1: %empty | KEYWORD ... ; @@ -1729,7 +1743,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); and until NEXT_SYM / PREVIOUS_SYM. */ %left PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE -%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM +%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM USER /* @@ -12265,7 +12279,7 @@ opt_escape: Lex->escape_used= TRUE; $$= $2; } - | /* empty */ + | /* empty */ %prec PREC_BELOW_ESCAPE { Lex->escape_used= FALSE; $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? @@ -15900,7 +15914,7 @@ keyword_sp_var_and_label: | UNDOFILE_SYM | UNKNOWN_SYM | UNTIL_SYM - | USER_SYM + | USER_SYM %prec PREC_BELOW_CONTRACTION_TOKEN2 | USE_FRM | VARIABLES | VERSIONING_SYM diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy index ecbf4f3aa28..97245259fec 100644 --- a/sql/sql_yacc_ora.yy +++ b/sql/sql_yacc_ora.yy @@ -282,10 +282,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %parse-param { THD *thd } %lex-param { THD *thd } /* - Currently there are 63 shift/reduce conflicts. + Currently there are 57 shift/reduce conflicts. We should not introduce new conflicts any more. */ -%expect 63 +%expect 57 /* Comments for TOKENS. @@ -1044,6 +1044,16 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %left JOIN_SYM INNER_SYM STRAIGHT_JOIN CROSS LEFT RIGHT /* A dummy token to force the priority of table_ref production in a join. */ %left TABLE_REF_PRIORITY + +/* + Give ESCAPE (in LIKE) a very low precedence. + This allows the concatenation operator || to be used on the right + side of "LIKE" with sql_mode=PIPES_AS_CONCAT (without ORACLE): + SELECT 'ab' LIKE 'a'||'b'||'c'; +*/ +%left PREC_BELOW_ESCAPE +%left ESCAPE_SYM + %left SET_VAR %left OR_SYM OR2_SYM %left XOR @@ -1053,7 +1063,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); %left NOT_SYM %left BETWEEN_SYM CASE_SYM WHEN_SYM THEN_SYM ELSE -%left '=' EQUAL_SYM GE '>' LE '<' NE IS LIKE REGEXP IN_SYM +%left '=' EQUAL_SYM GE '>' LE '<' NE IS LIKE SOUNDS_SYM REGEXP IN_SYM %left '|' %left '&' %left SHIFT_LEFT SHIFT_RIGHT @@ -1085,6 +1095,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); SELECT system FROM t1; ALTER TABLE DROP SYSTEM VERSIONIONG; + - USER: identifier, user: + SELECT user FROM t1; + KILL USER foo; + Note, we need here only tokens that cause shirt/reduce conflicts with keyword identifiers. For example: opt_clause1: %empty | KEYWORD ... ; @@ -1123,7 +1137,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); and until NEXT_SYM / PREVIOUS_SYM. */ %left PREC_BELOW_IDENTIFIER_OPT_SPECIAL_CASE -%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM +%left TRANSACTION_SYM TIMESTAMP PERIOD_SYM SYSTEM USER /* @@ -12404,7 +12418,7 @@ opt_escape: Lex->escape_used= TRUE; $$= $2; } - | /* empty */ + | /* empty */ %prec PREC_BELOW_ESCAPE { Lex->escape_used= FALSE; $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? @@ -16108,7 +16122,7 @@ keyword_sp_var_and_label: | UNDOFILE_SYM | UNKNOWN_SYM | UNTIL_SYM - | USER_SYM + | USER_SYM %prec PREC_BELOW_CONTRACTION_TOKEN2 | USE_FRM | VARIABLES | VIEW_SYM From fbee31418cf08c62d91195b04a9ed6a42c31bcec Mon Sep 17 00:00:00 2001 From: Daniel Bartholomew Date: Thu, 4 Oct 2018 11:26:42 -0400 Subject: [PATCH 10/28] bump the VERSION --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 177dfcacb9d..1b786747990 100644 --- a/VERSION +++ b/VERSION @@ -1,4 +1,4 @@ MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MINOR=3 -MYSQL_VERSION_PATCH=10 +MYSQL_VERSION_PATCH=11 SERVER_MATURITY=stable From 2af67150cf6247be6f0f2609a629ad05237d27cd Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Fri, 5 Oct 2018 16:44:51 +0530 Subject: [PATCH 11/28] MDEV-17289 Multi-pass recovery fails to apply some redo log records This is a regression caused by commit 73af8af094d65d1d8b8dfcdabf72e825e7cb7de5 (MDEV-15325 Incomplete validation of missing tablespace during recovery). If the recv_sys->addr_hash hash table ran out of memory, we would have to do crash recovery in multiple passes. If some tablespaces were missing, after the MDEV-15325 fix we would rescan the remaining redo log. But, we could incorrectly reset the "rescan" flag. Because of this, we would fail to apply some of the oldest redo log records to the data files. (The recv_sys->addr_hash would only contain records from the latest redo log scan batch.) Fix: After checking for missing tablespaces, reset the flag rescan=true, so that all redo log records will be re-read and applied. --- storage/innobase/log/log0recv.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index a69b425fdf4..402e896ba15 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -3582,6 +3582,8 @@ skip_apply: then there is a possiblity that hash table will not contain all space ids redo logs. Rescan the remaining unstored redo logs for the validation of missing tablespace. */ + ut_ad(rescan || !missing_tablespace); + while (missing_tablespace) { DBUG_PRINT("ib_log", ("Rescan of redo log to validate " "the missing tablespace. Scan " @@ -3606,6 +3608,8 @@ skip_apply: log_mutex_exit(); return err; } + + rescan = true; } if (srv_operation == SRV_OPERATION_NORMAL) { From 6f2389b22ddacc07ff2e4c0274610d6203c595be Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Fri, 5 Oct 2018 16:45:27 +0530 Subject: [PATCH 12/28] - Added flush table at the beginning of crash_recovery test case. --- mysql-test/suite/innodb_fts/r/crash_recovery.result | 1 + mysql-test/suite/innodb_fts/t/crash_recovery.test | 1 + 2 files changed, 2 insertions(+) diff --git a/mysql-test/suite/innodb_fts/r/crash_recovery.result b/mysql-test/suite/innodb_fts/r/crash_recovery.result index 7bf86631d1e..7d596684344 100644 --- a/mysql-test/suite/innodb_fts/r/crash_recovery.result +++ b/mysql-test/suite/innodb_fts/r/crash_recovery.result @@ -1,3 +1,4 @@ +FLUSH TABLES; CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), diff --git a/mysql-test/suite/innodb_fts/t/crash_recovery.test b/mysql-test/suite/innodb_fts/t/crash_recovery.test index 63843ef8511..f39d6680dfb 100644 --- a/mysql-test/suite/innodb_fts/t/crash_recovery.test +++ b/mysql-test/suite/innodb_fts/t/crash_recovery.test @@ -7,6 +7,7 @@ # The embedded server tests do not support restarting. --source include/not_embedded.inc +FLUSH TABLES; # Following are test for crash recovery on FTS index, the first scenario # is for bug Bug #14586855 INNODB: FAILING ASSERTION: (DICT_INDEX_GET_N_UNIQUE( # PLAN->INDEX) <= PLAN->N_EXAC From 29703e4f876d09eb0532c2089cf176a038f5fae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 4 Oct 2018 16:08:25 +0300 Subject: [PATCH 13/28] Fix a Galera result --- .../suite/galera/r/galera_ist_rsync,debug.rdiff | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/galera/r/galera_ist_rsync,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_rsync,debug.rdiff index 9070acc76bf..260f8a8cab8 100644 --- a/mysql-test/suite/galera/r/galera_ist_rsync,debug.rdiff +++ b/mysql-test/suite/galera/r/galera_ist_rsync,debug.rdiff @@ -1,11 +1,12 @@ --- r/galera_ist_rsync.result 2018-09-11 12:38:42.027479411 +0300 +++ r/galera_ist_rsync.reject 2018-09-17 10:50:16.527307668 +0300 -@@ -259,3 +259,100 @@ +@@ -259,3 +259,111 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; +Performing State Transfer on a server that has been killed and restarted +while a DDL was in progress on it ++connection node_1; +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; @@ -14,6 +15,7 @@ +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); ++connection node_2; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); @@ -22,9 +24,12 @@ +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++connection node_1; +ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++connection node_2; +SET wsrep_sync_wait = 0; +Killing server ... ++connection node_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (f1) VALUES ('node1_committed_during'); @@ -39,6 +44,7 @@ +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); @@ -46,7 +52,9 @@ +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++connection node_2; +Performing --wsrep-recover ... ++connection node_2; +Starting server ... +Using --wsrep-start-position when starting mysqld ... +SET AUTOCOMMIT=OFF; @@ -57,6 +65,7 @@ +INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +COMMIT; ++connection node_1; +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); @@ -71,6 +80,7 @@ +INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +COMMIT; ++connection node_1a_galera_st_kill_slave_ddl; +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); @@ -88,6 +98,7 @@ +1 +COMMIT; +SET AUTOCOMMIT=ON; ++connection node_1; +SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; +COUNT(*) = 2 +1 From 6c97e85673602199f51dd4bbcb1cf93cbf47ffc9 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 20 Sep 2018 06:13:43 +0300 Subject: [PATCH 14/28] Remove valgrind warnings from Item_str_concat This warning come from a copy() operation of type: memcpy(ptr, ptr+A, B), which is safe but produces a warning when run with valgrind. To avoid the warning, I added copy_or_move() method which uses memmove() instead of memcpy(). In 10.3 the change in item_strfunc::Item_func_concat() has to be mirroed in Item_func_concat_oracle() to avoid future valgrind warnings. --- sql/item_strfunc.cc | 2 +- sql/sql_string.cc | 23 +++++++++++++++++++++-- sql/sql_string.h | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index e332f034fb3..57a1e7ec55b 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -603,7 +603,7 @@ String *Item_func_concat::val_str(String *str) goto null; if (res != str) - str->copy(res->ptr(), res->length(), res->charset()); + str->copy_or_move(res->ptr(), res->length(), res->charset()); for (uint i= 1 ; i < arg_count ; i++) { diff --git a/sql/sql_string.cc b/sql/sql_string.cc index beff50bd1c5..615de8b545a 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -184,9 +184,9 @@ bool String::copy(const String &str) bool String::copy(const char *str,size_t arg_length, CHARSET_INFO *cs) { + DBUG_ASSERT(arg_length < UINT_MAX32); if (alloc(arg_length)) return TRUE; - DBUG_ASSERT(arg_length < UINT_MAX32); if (Ptr == str && arg_length == uint32(str_length)) { /* @@ -203,6 +203,24 @@ bool String::copy(const char *str,size_t arg_length, CHARSET_INFO *cs) return FALSE; } +/* + Copy string, where strings may overlap. + Same as String::copy, but use memmove instead of memcpy to avoid warnings + from valgrind +*/ + +bool String::copy_or_move(const char *str,size_t arg_length, CHARSET_INFO *cs) +{ + DBUG_ASSERT(arg_length < UINT_MAX32); + if (alloc(arg_length)) + return TRUE; + if ((str_length=uint32(arg_length))) + memmove(Ptr,str,arg_length); + Ptr[arg_length]=0; + str_charset=cs; + return FALSE; +} + /* Checks that the source string can be just copied to the destination string @@ -336,8 +354,9 @@ bool String::set_or_copy_aligned(const char *str,uint32 arg_length, /* How many bytes are in incomplete character */ uint32 offset= (arg_length % cs->mbminlen); - if (!offset) /* All characters are complete, just copy */ + if (!offset) { + /* All characters are complete, just use given string */ set(str, arg_length, cs); return FALSE; } diff --git a/sql/sql_string.h b/sql/sql_string.h index 4f86d0dd0f1..ea810f15f80 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -429,6 +429,7 @@ public: bool copy(); // Alloc string if not alloced bool copy(const String &s); // Allocate new string bool copy(const char *s,size_t arg_length, CHARSET_INFO *cs); // Allocate new string + bool copy_or_move(const char *s,size_t arg_length, CHARSET_INFO *cs); static bool needs_conversion(uint32 arg_length, CHARSET_INFO *cs_from, CHARSET_INFO *cs_to, uint32 *offset); From 1e06daea7c2266935c106b773aa44b9540b143b8 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 20 Sep 2018 06:14:03 +0300 Subject: [PATCH 15/28] Remove not used variable --- storage/maria/ma_key_recover.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/storage/maria/ma_key_recover.c b/storage/maria/ma_key_recover.c index 610810756f2..549913ac918 100644 --- a/storage/maria/ma_key_recover.c +++ b/storage/maria/ma_key_recover.c @@ -933,8 +933,6 @@ err: @retval 1 Error */ -long my_counter= 0; - uint _ma_apply_redo_index(MARIA_HA *info, LSN lsn, const uchar *header, uint head_length) { From 33fadbfefcc040f0b5ae589d385468e5ba26b1cd Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Fri, 5 Oct 2018 17:36:31 +0300 Subject: [PATCH 16/28] MDEV-17289: Add a test case --- mysql-test/suite/innodb/r/innodb-index.result | 1 + mysql-test/suite/innodb/t/innodb-index.test | 1 + 2 files changed, 2 insertions(+) diff --git a/mysql-test/suite/innodb/r/innodb-index.result b/mysql-test/suite/innodb/r/innodb-index.result index df27769b810..4a9f9de352c 100644 --- a/mysql-test/suite/innodb/r/innodb-index.result +++ b/mysql-test/suite/innodb/r/innodb-index.result @@ -1851,6 +1851,7 @@ drop table t1; # # MDEV-15325 Incomplete validation of missing tablespace during recovery # +SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; CREATE TABLE t1(f1 INT PRIMARY KEY)ENGINE=InnoDB; CREATE TABLE t2(f1 INT PRIMARY KEY)ENGINE=InnoDB; # Kill the server diff --git a/mysql-test/suite/innodb/t/innodb-index.test b/mysql-test/suite/innodb/t/innodb-index.test index b34133a92e9..99f0cfdba86 100644 --- a/mysql-test/suite/innodb/t/innodb-index.test +++ b/mysql-test/suite/innodb/t/innodb-index.test @@ -1084,6 +1084,7 @@ drop table t1; --echo # --source include/no_checkpoint_start.inc +SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; CREATE TABLE t1(f1 INT PRIMARY KEY)ENGINE=InnoDB; CREATE TABLE t2(f1 INT PRIMARY KEY)ENGINE=InnoDB; From 7fefd53f94bdb5aeab352665ae0f208b858e88f8 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 4 Oct 2018 14:24:14 +0100 Subject: [PATCH 17/28] MDEV-14581 Server does not clear diagnostics between sessions Amend previous patch, so it works in all cases (also for "change user" command, and for RESET CONNECTION in 10.3) --- sql/mysqld.cc | 4 ---- sql/sql_class.cc | 5 +++++ tests/mysql_client_test.c | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index b8bb63c4259..784bfaa58b0 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2962,10 +2962,6 @@ static bool cache_thread(THD *thd) _db_pop_(); #endif - /* Clear warnings. */ - if (!thd->get_stmt_da()->is_warning_info_empty()) - thd->get_stmt_da()->clear_warning_info(thd->query_id); - set_timespec(abstime, THREAD_CACHE_TIMEOUT); while (!abort_loop && ! wake_thread && ! kill_cached_threads) { diff --git a/sql/sql_class.cc b/sql/sql_class.cc index bd41a3729d6..e581ed0af25 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1332,6 +1332,11 @@ void THD::change_user(void) cleanup_done= 0; reset_killed(); thd_clear_errors(this); + + /* Clear warnings. */ + if (!get_stmt_da()->is_warning_info_empty()) + get_stmt_da()->clear_warning_info(0); + init(); stmt_map.reset(); my_hash_init(&user_vars, system_charset_info, USER_VARS_HASH_SIZE, 0, 0, diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 99cee8f7ed4..bb72e8b575d 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -16348,6 +16348,7 @@ static void test_change_user() const char *db= "mysqltest_user_test_database"; int rc; MYSQL* conn; + MYSQL_RES* res; DBUG_ENTER("test_change_user"); myheader("test_change_user"); @@ -16484,6 +16485,20 @@ static void test_change_user() rc= mysql_change_user(conn, user_pw, pw, ""); myquery(rc); + /* MDEV-14581 : Check that there are no warnings after change user.*/ + rc = mysql_query(conn,"SIGNAL SQLSTATE '01000'"); + myquery(rc); + + rc = mysql_change_user(conn, user_pw, pw, ""); + myquery(rc); + + rc = mysql_query(conn, "SHOW WARNINGS"); + myquery(rc); + res = mysql_store_result(conn); + rc = my_process_result_set(res); + DIE_UNLESS(rc == 0); + mysql_free_result(res); + rc= mysql_change_user(conn, user_no_pw, pw, db); DIE_UNLESS(rc); if (! opt_silent) From 8c2360dee880a5ba4e03915f1ec0159b17974e2d Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 4 Oct 2018 15:40:26 +0100 Subject: [PATCH 18/28] MDEV-17373 Windows: application verifier stop "Attempt to use an unknown SOCKET" --- include/mysql/psi/mysql_socket.h | 4 ++-- sql/sql_acl.cc | 2 +- sql/sql_prepare.cc | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mysql/psi/mysql_socket.h b/include/mysql/psi/mysql_socket.h index 6bc14e984fd..3becd2c538c 100644 --- a/include/mysql/psi/mysql_socket.h +++ b/include/mysql/psi/mysql_socket.h @@ -735,7 +735,7 @@ inline_mysql_socket_send MYSQL_SOCKET mysql_socket, const SOCKBUF_T *buf, size_t n, int flags) { ssize_t result; - + DBUG_ASSERT(mysql_socket.fd != INVALID_SOCKET); #ifdef HAVE_PSI_SOCKET_INTERFACE if (mysql_socket.m_psi != NULL) { @@ -776,7 +776,7 @@ inline_mysql_socket_recv MYSQL_SOCKET mysql_socket, SOCKBUF_T *buf, size_t n, int flags) { ssize_t result; - + DBUG_ASSERT(mysql_socket.fd != INVALID_SOCKET); #ifdef HAVE_PSI_SOCKET_INTERFACE if (mysql_socket.m_psi != NULL) { diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 03456b93bea..733d844e5e4 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -12233,7 +12233,7 @@ static bool send_plugin_request_packet(MPVIO_EXT *mpvio, const char *client_auth_plugin= ((st_mysql_auth *) (plugin_decl(mpvio->plugin)->info))->client_auth_plugin; - DBUG_EXECUTE_IF("auth_disconnect", { vio_close(net->vio); DBUG_RETURN(1); }); + DBUG_EXECUTE_IF("auth_disconnect", { DBUG_RETURN(1); }); DBUG_ASSERT(client_auth_plugin); /* diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 51e9152220b..65f7c85b4ec 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -3224,7 +3224,7 @@ static void mysql_stmt_execute_common(THD *thd, sp_cache_enforce_limit(thd->sp_func_cache, stored_program_cache_size); /* Close connection socket; for use with client testing (Bug#43560). */ - DBUG_EXECUTE_IF("close_conn_after_stmt_execute", vio_close(thd->net.vio);); + DBUG_EXECUTE_IF("close_conn_after_stmt_execute", vio_shutdown(thd->net.vio,SHUT_RD);); DBUG_VOID_RETURN; } From acca321af373ae24ccbb35567cfdb3f47ce3e7d2 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Thu, 4 Oct 2018 16:06:05 +0100 Subject: [PATCH 19/28] CMake, Windows - reduce amount of noisy, irrelevant MESSAGE()s --- storage/connect/CMakeLists.txt | 1 - storage/mroonga/CMakeLists.txt | 2 +- storage/tokudb/CMakeLists.txt | 5 ++++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/connect/CMakeLists.txt b/storage/connect/CMakeLists.txt index 408f6d223a1..86f44edc7c9 100644 --- a/storage/connect/CMakeLists.txt +++ b/storage/connect/CMakeLists.txt @@ -124,7 +124,6 @@ IF(WIN32) OPTION(CONNECT_WITH_MSXML "Compile CONNECT storage engine with MSXML support" ON) IF(CONNECT_WITH_MSXML) add_definitions(-DMSX6 -DDOMDOC_SUPPORT) - message(STATUS "MSXML library version: msxml6") SET(MSXML_FOUND 1) SET(CONNECT_SOURCES ${CONNECT_SOURCES} domdoc.cpp domdoc.h) ENDIF(CONNECT_WITH_MSXML) diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt index 5a7d4699386..7bf489ddc6f 100644 --- a/storage/mroonga/CMakeLists.txt +++ b/storage/mroonga/CMakeLists.txt @@ -65,7 +65,7 @@ set(MRN_BUNDLED_GROONGA_DIR if(EXISTS "${MRN_BUNDLED_GROONGA_DIR}") set(MRN_GROONGA_BUNDLED TRUE) if(MSVC) - message(STATUS "Bundled Mroonga does not support MSVC yet") + # Bundled Mroonga does not support MSVC yet return() endif() else() diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt index 4d0589f1e7d..86463c2997e 100644 --- a/storage/tokudb/CMakeLists.txt +++ b/storage/tokudb/CMakeLists.txt @@ -1,6 +1,9 @@ SET(TOKUDB_VERSION 5.6.41-84.1) # PerconaFT only supports x86-64 and cmake-2.8.9+ -IF(CMAKE_VERSION VERSION_LESS "2.8.9") +IF(WIN32) + # tokudb never worked there + RETURN() +ELSEIF(CMAKE_VERSION VERSION_LESS "2.8.9") MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB") ELSEIF(NOT HAVE_DLOPEN) MESSAGE(STATUS "dlopen is required by TokuDB") From 1ff22b20624f233bf3ce785bd668d9a85cd8abe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Sat, 6 Oct 2018 13:40:42 +0300 Subject: [PATCH 20/28] MDEV-17289: Skip the test for non-debug server --- mysql-test/suite/innodb/r/innodb-index,debug.rdiff | 10 ++++++++++ mysql-test/suite/innodb/r/innodb-index.result | 1 - mysql-test/suite/innodb/t/innodb-index.test | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 mysql-test/suite/innodb/r/innodb-index,debug.rdiff diff --git a/mysql-test/suite/innodb/r/innodb-index,debug.rdiff b/mysql-test/suite/innodb/r/innodb-index,debug.rdiff new file mode 100644 index 00000000000..2740e440cd5 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb-index,debug.rdiff @@ -0,0 +1,10 @@ +--- innodb-index.result ++++ innodb-index.reject +@@ -1851,6 +1851,7 @@ + # + # MDEV-15325 Incomplete validation of missing tablespace during recovery + # ++SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; + CREATE TABLE t1(f1 INT PRIMARY KEY)ENGINE=InnoDB; + CREATE TABLE t2(f1 INT PRIMARY KEY)ENGINE=InnoDB; + # Kill the server diff --git a/mysql-test/suite/innodb/r/innodb-index.result b/mysql-test/suite/innodb/r/innodb-index.result index 4a9f9de352c..df27769b810 100644 --- a/mysql-test/suite/innodb/r/innodb-index.result +++ b/mysql-test/suite/innodb/r/innodb-index.result @@ -1851,7 +1851,6 @@ drop table t1; # # MDEV-15325 Incomplete validation of missing tablespace during recovery # -SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; CREATE TABLE t1(f1 INT PRIMARY KEY)ENGINE=InnoDB; CREATE TABLE t2(f1 INT PRIMARY KEY)ENGINE=InnoDB; # Kill the server diff --git a/mysql-test/suite/innodb/t/innodb-index.test b/mysql-test/suite/innodb/t/innodb-index.test index 99f0cfdba86..97014d84ca7 100644 --- a/mysql-test/suite/innodb/t/innodb-index.test +++ b/mysql-test/suite/innodb/t/innodb-index.test @@ -1,6 +1,7 @@ -- source include/have_innodb.inc # Embedded server tests do not support restarting. -- source include/not_embedded.inc +-- source include/maybe_debug.inc let $MYSQLD_DATADIR= `select @@datadir`; @@ -1084,7 +1085,9 @@ drop table t1; --echo # --source include/no_checkpoint_start.inc +if ($have_debug) { SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; +} CREATE TABLE t1(f1 INT PRIMARY KEY)ENGINE=InnoDB; CREATE TABLE t2(f1 INT PRIMARY KEY)ENGINE=InnoDB; From 1ebe841fb85725c2a6aaecb3bca41ec098a5193d Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Sun, 7 Oct 2018 10:19:19 -0700 Subject: [PATCH 21/28] MDEV-17382 Hash join algorithm should not be used to join materialized derived table / view by equality Now rows of a materialized derived table are always put into a temporary table before join operation. If BNLH is used to join this table with the result of a partial join then both operands of the join are actually put into main memory. In most cases this is not efficient. We could avoid this by sending the rows of the derived table directly to the join operation. However this kind of data flow is not supported yet. Fixed by not allowing usage of hash join algorithm to join a materialized derived table if it's joined by an equality predicate of the form f=e where f is a field of the derived table. --- mysql-test/r/derived_opt.result | 35 ++++++++++++++++++++++++++- mysql-test/r/innodb_mrr_cpk.result | 2 +- mysql-test/t/derived_opt.test | 38 ++++++++++++++++++++++++++++++ sql/sql_select.cc | 8 +++++++ 4 files changed, 81 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/derived_opt.result b/mysql-test/r/derived_opt.result index 6e4ea1b5d36..0e8b49d5714 100644 --- a/mysql-test/r/derived_opt.result +++ b/mysql-test/r/derived_opt.result @@ -499,9 +499,42 @@ where D1.a= t1.a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using where -1 PRIMARY hash_ALL key0 #hash#key0 5 test.t1.a 100 Using join buffer (flat, BNLH join) +1 PRIMARY ref key0 key0 5 test.t1.a 10 2 DERIVED t2 ALL NULL NULL NULL NULL 100 Using filesort set join_cache_level=@tmp_jcl; set optimizer_switch=@tmp_os; drop table t1, t2; +# +# Bug mdev-17382: equi-join of derived table with join_cache_level=4 +# +CREATE TABLE t1 ( +id int NOT NULL, +amount decimal DEFAULT NULL, +PRIMARY KEY (id) +); +CREATE TABLE t2 ( +id int NOT NULL, +name varchar(50) DEFAULT NULL, +PRIMARY KEY (id) +); +INSERT INTO t1 VALUES +(1, 10.0000), (2, 20.0000), (3, 30.0000), (4, 40.0000), +(5, NULL), (6, NULL), (7, 70.0000), (8, 80.0000); +INSERT INTO t2 VALUES +(1,'A'), (2,'B'), (3,'C'), (4,'D'), (5, NULL), (6, NULL), +(7,'E'), (8,'F'), (9,'G'), (10,'H'), (11, NULL), (12, NULL); +set join_cache_level=4; +EXPLAIN +SELECT t2.id,t2.name,t.total_amt +FROM t2 +LEFT JOIN +(SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t +ON t2.id=t.id +WHERE t2.id < 3; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 range PRIMARY PRIMARY 4 NULL 3 Using index condition +1 PRIMARY ref key0 key0 5 test.t2.id 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 8 Using temporary; Using filesort +set join_cache_level=default; +DROP TABLE t1,t2; set optimizer_switch=@exit_optimizer_switch; diff --git a/mysql-test/r/innodb_mrr_cpk.result b/mysql-test/r/innodb_mrr_cpk.result index 28d7dd51df8..a2e43d7d127 100644 --- a/mysql-test/r/innodb_mrr_cpk.result +++ b/mysql-test/r/innodb_mrr_cpk.result @@ -226,7 +226,7 @@ set join_cache_level=3; explain SELECT 1 FROM (SELECT url, id FROM t2 LIMIT 1 OFFSET 20) derived RIGHT JOIN t1 ON t1.id = derived.id; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL # -1 PRIMARY hash_ALL key0 #hash#key0 25 test.t1.id # Using join buffer (flat, BNLH join) +1 PRIMARY ref key0 key0 25 test.t1.id # 2 DERIVED t2 ALL NULL NULL NULL NULL # set join_cache_level= @tmp_mdev5037; drop table t0,t1,t2; diff --git a/mysql-test/t/derived_opt.test b/mysql-test/t/derived_opt.test index 7f19553e4e5..aab95f69f26 100644 --- a/mysql-test/t/derived_opt.test +++ b/mysql-test/t/derived_opt.test @@ -363,5 +363,43 @@ set join_cache_level=@tmp_jcl; set optimizer_switch=@tmp_os; drop table t1, t2; +--echo # +--echo # Bug mdev-17382: equi-join of derived table with join_cache_level=4 +--echo # + +CREATE TABLE t1 ( + id int NOT NULL, + amount decimal DEFAULT NULL, +PRIMARY KEY (id) +); + +CREATE TABLE t2 ( + id int NOT NULL, + name varchar(50) DEFAULT NULL, +PRIMARY KEY (id) +); + +INSERT INTO t1 VALUES +(1, 10.0000), (2, 20.0000), (3, 30.0000), (4, 40.0000), +(5, NULL), (6, NULL), (7, 70.0000), (8, 80.0000); + +INSERT INTO t2 VALUES +(1,'A'), (2,'B'), (3,'C'), (4,'D'), (5, NULL), (6, NULL), +(7,'E'), (8,'F'), (9,'G'), (10,'H'), (11, NULL), (12, NULL); + +set join_cache_level=4; + +EXPLAIN +SELECT t2.id,t2.name,t.total_amt + FROM t2 + LEFT JOIN + (SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t + ON t2.id=t.id + WHERE t2.id < 3; + +set join_cache_level=default; + +DROP TABLE t1,t2; + # The following command must be the last one the file set optimizer_switch=@exit_optimizer_switch; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index a27053314bd..6f98bab32d3 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -11138,7 +11138,15 @@ uint check_join_cache_usage(JOIN_TAB *tab, effort now. */ if (tab->table->pos_in_table_list->is_materialized_derived()) + { no_bka_cache= true; + /* + Don't use hash join algorithm if the temporary table for the rows + of the derived table will be created with an equi-join key. + */ + if (tab->table->s->keys) + no_hashed_cache= true; + } /* Don't use join buffering if we're dictated not to by no_jbuf_after From e2535dcc04b5ecc15575b878ebeb0cc589cd23fe Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Mon, 8 Oct 2018 06:19:27 -0700 Subject: [PATCH 22/28] MDEV-17382 Hash join algorithm should not be used to join materialized derived table / view by equality Now rows of a materialized derived table are always put into a temporary table before join operation. If BNLH is used to join this table with the result of a partial join then both operands of the join are actually put into main memory. In most cases this is not efficient. We could avoid this by sending the rows of the derived table directly to the join operation. However this kind of data flow is not supported yet. Fixed by not allowing usage of hash join algorithm to join a materialized derived table if it's joined by an equality predicate of the form f=e where f is a field of the derived table. Change for the test case in 10.3: splitting must be turned off to preserve the explain. --- mysql-test/main/derived_opt.result | 38 ++++++++++++++++++++++- mysql-test/main/derived_opt.test | 43 +++++++++++++++++++++++++++ mysql-test/main/innodb_mrr_cpk.result | 2 +- sql/sql_select.cc | 8 +++++ 4 files changed, 89 insertions(+), 2 deletions(-) diff --git a/mysql-test/main/derived_opt.result b/mysql-test/main/derived_opt.result index 6e4ea1b5d36..48ac7e62653 100644 --- a/mysql-test/main/derived_opt.result +++ b/mysql-test/main/derived_opt.result @@ -499,9 +499,45 @@ where D1.a= t1.a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using where -1 PRIMARY hash_ALL key0 #hash#key0 5 test.t1.a 100 Using join buffer (flat, BNLH join) +1 PRIMARY ref key0 key0 5 test.t1.a 10 2 DERIVED t2 ALL NULL NULL NULL NULL 100 Using filesort set join_cache_level=@tmp_jcl; set optimizer_switch=@tmp_os; drop table t1, t2; +# +# Bug mdev-17382: equi-join of derived table with join_cache_level=4 +# +CREATE TABLE t1 ( +id int NOT NULL, +amount decimal DEFAULT NULL, +PRIMARY KEY (id) +); +CREATE TABLE t2 ( +id int NOT NULL, +name varchar(50) DEFAULT NULL, +PRIMARY KEY (id) +); +INSERT INTO t1 VALUES +(1, 10.0000), (2, 20.0000), (3, 30.0000), (4, 40.0000), +(5, NULL), (6, NULL), (7, 70.0000), (8, 80.0000); +INSERT INTO t2 VALUES +(1,'A'), (2,'B'), (3,'C'), (4,'D'), (5, NULL), (6, NULL), +(7,'E'), (8,'F'), (9,'G'), (10,'H'), (11, NULL), (12, NULL); +set @save_optimizer_switch= @@optimizer_switch; +set optimizer_switch='split_materialized=off'; +set join_cache_level=4; +EXPLAIN +SELECT t2.id,t2.name,t.total_amt +FROM t2 +LEFT JOIN +(SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t +ON t2.id=t.id +WHERE t2.id < 3; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 range PRIMARY PRIMARY 4 NULL 3 Using index condition +1 PRIMARY ref key0 key0 5 test.t2.id 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 8 Using temporary; Using filesort +set join_cache_level=default; +set optimizer_switch= @save_optimizer_switch; +DROP TABLE t1,t2; set optimizer_switch=@exit_optimizer_switch; diff --git a/mysql-test/main/derived_opt.test b/mysql-test/main/derived_opt.test index 7f19553e4e5..eccf4c13020 100644 --- a/mysql-test/main/derived_opt.test +++ b/mysql-test/main/derived_opt.test @@ -363,5 +363,48 @@ set join_cache_level=@tmp_jcl; set optimizer_switch=@tmp_os; drop table t1, t2; +--echo # +--echo # Bug mdev-17382: equi-join of derived table with join_cache_level=4 +--echo # + +CREATE TABLE t1 ( + id int NOT NULL, + amount decimal DEFAULT NULL, +PRIMARY KEY (id) +); + +CREATE TABLE t2 ( + id int NOT NULL, + name varchar(50) DEFAULT NULL, +PRIMARY KEY (id) +); + +INSERT INTO t1 VALUES +(1, 10.0000), (2, 20.0000), (3, 30.0000), (4, 40.0000), +(5, NULL), (6, NULL), (7, 70.0000), (8, 80.0000); + +INSERT INTO t2 VALUES +(1,'A'), (2,'B'), (3,'C'), (4,'D'), (5, NULL), (6, NULL), +(7,'E'), (8,'F'), (9,'G'), (10,'H'), (11, NULL), (12, NULL); + +set @save_optimizer_switch= @@optimizer_switch; +set optimizer_switch='split_materialized=off'; + +set join_cache_level=4; + +EXPLAIN +SELECT t2.id,t2.name,t.total_amt + FROM t2 + LEFT JOIN + (SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t + ON t2.id=t.id + WHERE t2.id < 3; + +set join_cache_level=default; + +set optimizer_switch= @save_optimizer_switch; + +DROP TABLE t1,t2; + # The following command must be the last one the file set optimizer_switch=@exit_optimizer_switch; diff --git a/mysql-test/main/innodb_mrr_cpk.result b/mysql-test/main/innodb_mrr_cpk.result index 28d7dd51df8..a2e43d7d127 100644 --- a/mysql-test/main/innodb_mrr_cpk.result +++ b/mysql-test/main/innodb_mrr_cpk.result @@ -226,7 +226,7 @@ set join_cache_level=3; explain SELECT 1 FROM (SELECT url, id FROM t2 LIMIT 1 OFFSET 20) derived RIGHT JOIN t1 ON t1.id = derived.id; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL # -1 PRIMARY hash_ALL key0 #hash#key0 25 test.t1.id # Using join buffer (flat, BNLH join) +1 PRIMARY ref key0 key0 25 test.t1.id # 2 DERIVED t2 ALL NULL NULL NULL NULL # set join_cache_level= @tmp_mdev5037; drop table t0,t1,t2; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index cd8f3d07824..5b08522aa38 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -11618,7 +11618,15 @@ uint check_join_cache_usage(JOIN_TAB *tab, effort now. */ if (tab->table->pos_in_table_list->is_materialized_derived()) + { no_bka_cache= true; + /* + Don't use hash join algorithm if the temporary table for the rows + of the derived table will be created with an equi-join key. + */ + if (tab->table->s->keys) + no_hashed_cache= true; + } /* Don't use join buffering if we're dictated not to by no_jbuf_after From 859536176897305f2e2f089eeba77871aefdb79c Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Mon, 8 Oct 2018 06:55:48 -0700 Subject: [PATCH 23/28] MDEV-17381 Wrong query result with LATERAL DERIVED optimization and join_cache_level=6 This bug was fixed by the patch for mdev-17382 applied to 5.5. --- mysql-test/main/derived_split_innodb.result | 41 +++++++++++++++++++++ mysql-test/main/derived_split_innodb.test | 41 +++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/mysql-test/main/derived_split_innodb.result b/mysql-test/main/derived_split_innodb.result index 7e4ba8e67eb..21dbd494e4b 100644 --- a/mysql-test/main/derived_split_innodb.result +++ b/mysql-test/main/derived_split_innodb.result @@ -58,3 +58,44 @@ WHERE t2.id2=t.id2; id3 1 DROP TABLE t1,t2,t3; +# +# Bug mdev-17381: equi-join of derived table with join_cache_level=4 +# +CREATE TABLE t1 ( +id int NOT NULL, +amount decimal DEFAULT NULL, +PRIMARY KEY (id) +) ENGINE=INNODB; +CREATE TABLE t2 ( +id int NOT NULL, +name varchar(50) DEFAULT NULL, +PRIMARY KEY (id) +) ENGINE=INNODB; +INSERT INTO t1 VALUES +(1, 10.0000), (2, 20.0000), (3, 30.0000), (4, 40.0000), +(5, NULL), (6, NULL), (7, 70.0000), (8, 80.0000); +INSERT INTO t2 VALUES +(1,'A'), (2,'B'), (3,'C'), (4,'D'), (5, NULL), (6, NULL), +(7,'E'), (8,'F'), (9,'G'), (10,'H'), (11, NULL), (12, NULL); +set join_cache_level=4; +SELECT t2.id,t2.name,t.total_amt +FROM t2 +LEFT JOIN +(SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t +ON t2.id=t.id +WHERE t2.id < 3; +id name total_amt +1 A 10 +2 B 20 +EXPLAIN SELECT t2.id,t2.name,t.total_amt +FROM t2 +LEFT JOIN +(SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t +ON t2.id=t.id +WHERE t2.id < 3; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 range PRIMARY PRIMARY 4 NULL 2 Using where +1 PRIMARY ref key0 key0 5 test.t2.id 2 +2 LATERAL DERIVED t1 eq_ref PRIMARY PRIMARY 4 test.t2.id 1 +set join_cache_level=default; +DROP TABLE t1,t2; diff --git a/mysql-test/main/derived_split_innodb.test b/mysql-test/main/derived_split_innodb.test index 5e5e3d5d723..c3b3bcabede 100644 --- a/mysql-test/main/derived_split_innodb.test +++ b/mysql-test/main/derived_split_innodb.test @@ -53,3 +53,44 @@ eval EXPLAIN $q; eval $q; DROP TABLE t1,t2,t3; + +--echo # +--echo # Bug mdev-17381: equi-join of derived table with join_cache_level=4 +--echo # + +CREATE TABLE t1 ( + id int NOT NULL, + amount decimal DEFAULT NULL, +PRIMARY KEY (id) +) ENGINE=INNODB; + +CREATE TABLE t2 ( + id int NOT NULL, + name varchar(50) DEFAULT NULL, +PRIMARY KEY (id) +) ENGINE=INNODB; + +INSERT INTO t1 VALUES +(1, 10.0000), (2, 20.0000), (3, 30.0000), (4, 40.0000), +(5, NULL), (6, NULL), (7, 70.0000), (8, 80.0000); + +INSERT INTO t2 VALUES +(1,'A'), (2,'B'), (3,'C'), (4,'D'), (5, NULL), (6, NULL), +(7,'E'), (8,'F'), (9,'G'), (10,'H'), (11, NULL), (12, NULL); + +set join_cache_level=4; + +let $q= +SELECT t2.id,t2.name,t.total_amt + FROM t2 + LEFT JOIN + (SELECT id, sum(amount) total_amt FROM t1 GROUP BY id) AS t + ON t2.id=t.id + WHERE t2.id < 3; + +eval $q; +eval EXPLAIN $q; + +set join_cache_level=default; + +DROP TABLE t1,t2; From 7d4beb7286d53be07ff552de9d37ea90c2762651 Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Mon, 8 Oct 2018 21:06:42 +0530 Subject: [PATCH 24/28] MDEV-16980 Wrongly set tablename len while opening the table for purge thread Problem: ======= Purge tries to fetch mdl lock for the whole table even though it tries to open one of the partition. But table name length was wrongly set to indicate the partition name too. Solution: ======== - Table name length should identify the table name only not the partition name. --- .../suite/gcol/r/gcol_partition_innodb.result | 17 ++++++++++++++++ .../suite/gcol/t/gcol_partition_innodb.test | 20 +++++++++++++++++++ storage/innobase/handler/ha_innodb.cc | 1 + 3 files changed, 38 insertions(+) diff --git a/mysql-test/suite/gcol/r/gcol_partition_innodb.result b/mysql-test/suite/gcol/r/gcol_partition_innodb.result index 9a0e676e76f..7600c9792f1 100644 --- a/mysql-test/suite/gcol/r/gcol_partition_innodb.result +++ b/mysql-test/suite/gcol/r/gcol_partition_innodb.result @@ -1,4 +1,6 @@ SET @@session.default_storage_engine = 'InnoDB'; +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; drop table if exists t1; # Case 1. Partitioning by RANGE based on a non-stored generated column. CREATE TABLE t1 ( @@ -86,6 +88,20 @@ CHECK TABLE t EXTENDED; Table Op Msg_type Msg_text test.t check status OK DROP TABLE t; +# +# MDEV-16980 Wrongly set tablename len while opening the +# table for purge thread +# +CREATE TABLE t1(pk SERIAL, d DATE, vd DATE AS (d) VIRTUAL, +PRIMARY KEY(pk), KEY (vd))ENGINE=InnoDB +PARTITION BY HASH(pk) PARTITIONS 2; +INSERT IGNORE INTO t1 (d) VALUES ('2015-04-14'); +SET sql_mode= ''; +REPLACE INTO t1 SELECT * FROM t1; +Warnings: +Warning 1906 The value specified for generated column 'vd' in table 't1' ignored +DROP TABLE t1; +InnoDB 0 transactions not purged DROP VIEW IF EXISTS v1,v2; DROP TABLE IF EXISTS t1,t2,t3; DROP PROCEDURE IF EXISTS p1; @@ -93,3 +109,4 @@ DROP FUNCTION IF EXISTS f1; DROP TRIGGER IF EXISTS trg1; DROP TRIGGER IF EXISTS trg2; set sql_warnings = 0; +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/gcol/t/gcol_partition_innodb.test b/mysql-test/suite/gcol/t/gcol_partition_innodb.test index 06e6ccc1ba4..75e2f80af20 100644 --- a/mysql-test/suite/gcol/t/gcol_partition_innodb.test +++ b/mysql-test/suite/gcol/t/gcol_partition_innodb.test @@ -30,6 +30,8 @@ # Set the session storage engine --source include/have_innodb.inc eval SET @@session.default_storage_engine = 'InnoDB'; +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; ##### Workarounds for known open engine specific bugs # none @@ -41,6 +43,24 @@ eval SET @@session.default_storage_engine = 'InnoDB'; #------------------------------------------------------------------------------# # Execute storage engine specific tests +--echo # +--echo # MDEV-16980 Wrongly set tablename len while opening the +--echo # table for purge thread +--echo # + +CREATE TABLE t1(pk SERIAL, d DATE, vd DATE AS (d) VIRTUAL, + PRIMARY KEY(pk), KEY (vd))ENGINE=InnoDB + PARTITION BY HASH(pk) PARTITIONS 2; + +INSERT IGNORE INTO t1 (d) VALUES ('2015-04-14'); +SET sql_mode= ''; +REPLACE INTO t1 SELECT * FROM t1; + +# Cleanup +DROP TABLE t1; + +--source suite/innodb/include/wait_all_purged.inc #------------------------------------------------------------------------------# # Cleanup --source suite/gcol/inc/gcol_cleanup.inc +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 4ad97597b8b..32c72ade7b2 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -20373,6 +20373,7 @@ static bool table_name_parse( if (char *is_part = strchr(tbl_buf, '#')) { *is_part = '\0'; + tblnamelen = is_part - tbl_buf; } filename_to_tablename(tbl_buf, tblname, MAX_TABLE_NAME_LEN + 1, true); From e9d9ca8c44c96e5943c0175177b3377a65b2d76f Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Mon, 8 Oct 2018 21:40:18 +0530 Subject: [PATCH 25/28] MDEV-16980 Wrongly set tablename len while opening the table for purge thread Problem: ======= Purge tries to fetch mdl lock for the whole table even though it tries to open one of the partition. But table name length was wrongly set to indicate the partition name too. Solution: ======== - Table name length should identify the table name only not the partition name. --- .../suite/gcol/r/gcol_partition_innodb.result | 17 ++++++++++++++++ .../suite/gcol/t/gcol_partition_innodb.test | 20 +++++++++++++++++++ sql/table.h | 2 ++ storage/innobase/handler/ha_innodb.cc | 1 + 4 files changed, 40 insertions(+) diff --git a/mysql-test/suite/gcol/r/gcol_partition_innodb.result b/mysql-test/suite/gcol/r/gcol_partition_innodb.result index 9a0e676e76f..7600c9792f1 100644 --- a/mysql-test/suite/gcol/r/gcol_partition_innodb.result +++ b/mysql-test/suite/gcol/r/gcol_partition_innodb.result @@ -1,4 +1,6 @@ SET @@session.default_storage_engine = 'InnoDB'; +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; drop table if exists t1; # Case 1. Partitioning by RANGE based on a non-stored generated column. CREATE TABLE t1 ( @@ -86,6 +88,20 @@ CHECK TABLE t EXTENDED; Table Op Msg_type Msg_text test.t check status OK DROP TABLE t; +# +# MDEV-16980 Wrongly set tablename len while opening the +# table for purge thread +# +CREATE TABLE t1(pk SERIAL, d DATE, vd DATE AS (d) VIRTUAL, +PRIMARY KEY(pk), KEY (vd))ENGINE=InnoDB +PARTITION BY HASH(pk) PARTITIONS 2; +INSERT IGNORE INTO t1 (d) VALUES ('2015-04-14'); +SET sql_mode= ''; +REPLACE INTO t1 SELECT * FROM t1; +Warnings: +Warning 1906 The value specified for generated column 'vd' in table 't1' ignored +DROP TABLE t1; +InnoDB 0 transactions not purged DROP VIEW IF EXISTS v1,v2; DROP TABLE IF EXISTS t1,t2,t3; DROP PROCEDURE IF EXISTS p1; @@ -93,3 +109,4 @@ DROP FUNCTION IF EXISTS f1; DROP TRIGGER IF EXISTS trg1; DROP TRIGGER IF EXISTS trg2; set sql_warnings = 0; +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/gcol/t/gcol_partition_innodb.test b/mysql-test/suite/gcol/t/gcol_partition_innodb.test index 06e6ccc1ba4..75e2f80af20 100644 --- a/mysql-test/suite/gcol/t/gcol_partition_innodb.test +++ b/mysql-test/suite/gcol/t/gcol_partition_innodb.test @@ -30,6 +30,8 @@ # Set the session storage engine --source include/have_innodb.inc eval SET @@session.default_storage_engine = 'InnoDB'; +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; ##### Workarounds for known open engine specific bugs # none @@ -41,6 +43,24 @@ eval SET @@session.default_storage_engine = 'InnoDB'; #------------------------------------------------------------------------------# # Execute storage engine specific tests +--echo # +--echo # MDEV-16980 Wrongly set tablename len while opening the +--echo # table for purge thread +--echo # + +CREATE TABLE t1(pk SERIAL, d DATE, vd DATE AS (d) VIRTUAL, + PRIMARY KEY(pk), KEY (vd))ENGINE=InnoDB + PARTITION BY HASH(pk) PARTITIONS 2; + +INSERT IGNORE INTO t1 (d) VALUES ('2015-04-14'); +SET sql_mode= ''; +REPLACE INTO t1 SELECT * FROM t1; + +# Cleanup +DROP TABLE t1; + +--source suite/innodb/include/wait_all_purged.inc #------------------------------------------------------------------------------# # Cleanup --source suite/gcol/inc/gcol_cleanup.inc +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/sql/table.h b/sql/table.h index fc3102fc9a5..33b921cd946 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1765,6 +1765,8 @@ struct TABLE_LIST mdl_type= MDL_SHARED_READ; bzero((char*) this, sizeof(*this)); + DBUG_ASSERT(!db_name_arg || strlen(db_name_arg) == db_length_arg); + DBUG_ASSERT(!table_name_arg || strlen(table_name_arg) == table_name_length_arg); db= (char*) db_name_arg; db_length= db_length_arg; table_name= (char*) table_name_arg; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index b7d3c6da099..49f51c78f73 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -21341,6 +21341,7 @@ static bool table_name_parse( if (char *is_part = strchr(tbl_buf, '#')) { *is_part = '\0'; + tblnamelen = is_part - tbl_buf; } filename_to_tablename(tbl_buf, tblname, MAX_TABLE_NAME_LEN + 1, true); From 8b371e4b1343d74644542a3a42eb91422ce0ae79 Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Tue, 9 Oct 2018 17:01:49 +0300 Subject: [PATCH 26/28] MDEV-16577: rocksdb.issue255 fails in buildbot Make the testcase stable --- .../rocksdb/mysql-test/rocksdb/r/issue255.result | 14 +++++++------- .../rocksdb/mysql-test/rocksdb/t/issue255.test | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/storage/rocksdb/mysql-test/rocksdb/r/issue255.result b/storage/rocksdb/mysql-test/rocksdb/r/issue255.result index 9c6d9af8d12..c1ce3be2276 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/issue255.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/issue255.result @@ -2,7 +2,7 @@ CREATE TABLE t1 (pk BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT); INSERT INTO t1 VALUES (5); SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 1 # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL INSERT INTO t1 VALUES ('538647864786478647864'); Warnings: Warning 1264 Out of range value for column 'pk' at row 1 @@ -21,7 +21,7 @@ pk 9223372036854775807 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 2 # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL INSERT INTO t1 VALUES (); ERROR 23000: Duplicate entry '9223372036854775807' for key 'PRIMARY' SELECT * FROM t1; @@ -30,13 +30,13 @@ pk 9223372036854775807 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 2 # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL DROP TABLE t1; CREATE TABLE t1 (pk TINYINT NOT NULL PRIMARY KEY AUTO_INCREMENT); INSERT INTO t1 VALUES (5); SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 1 # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL INSERT INTO t1 VALUES (1000); Warnings: Warning 1264 Out of range value for column 'pk' at row 1 @@ -46,7 +46,7 @@ pk 127 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 2 # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL INSERT INTO t1 VALUES (); ERROR 23000: Duplicate entry '127' for key 'PRIMARY' SELECT * FROM t1; @@ -55,7 +55,7 @@ pk 127 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 2 # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL INSERT INTO t1 VALUES (); ERROR 23000: Duplicate entry '127' for key 'PRIMARY' SELECT * FROM t1; @@ -64,5 +64,5 @@ pk 127 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB # Fixed 2 # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB # Fixed # # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/issue255.test b/storage/rocksdb/mysql-test/rocksdb/t/issue255.test index 588b28fbee6..370dece0c6c 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/issue255.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/issue255.test @@ -3,24 +3,24 @@ CREATE TABLE t1 (pk BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT); INSERT INTO t1 VALUES (5); ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; INSERT INTO t1 VALUES ('538647864786478647864'); ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SELECT * FROM t1; SHOW TABLE STATUS LIKE 't1'; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (); SELECT * FROM t1; ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (); SELECT * FROM t1; ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; DROP TABLE t1; @@ -28,24 +28,24 @@ DROP TABLE t1; CREATE TABLE t1 (pk TINYINT NOT NULL PRIMARY KEY AUTO_INCREMENT); INSERT INTO t1 VALUES (5); ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; INSERT INTO t1 VALUES (1000); SELECT * FROM t1; ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (); SELECT * FROM t1; ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (); SELECT * FROM t1; ---replace_column 3 # 6 # 7 # 8 # 9 # 10 # +--replace_column 3 # 5 # 6 # 7 # 8 # 9 # 10 # SHOW TABLE STATUS LIKE 't1'; DROP TABLE t1; From 2610c26a53b4f65f7a8f6ce8b6da96eb39b0cfbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 10 Oct 2018 06:14:14 +0300 Subject: [PATCH 27/28] MDEV-16273 innodb.alter_kill fails Unknown storage engine 'InnoDB' The test is shutting down InnoDB, corrupting a file, and finally restarting InnoDB. Before the shutdown, the test created the table and inserted some records. Before MDEV-12288, there would be no access to the table after server restart, but after MDEV-12288 purge would reset the transaction identifier after the INSERT, and this would sometimes happen after the restart. To make the test deterministic, wait for purge to complete before the shutdown. --- mysql-test/suite/innodb/r/alter_kill.result | 2 ++ mysql-test/suite/innodb/t/alter_kill.test | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mysql-test/suite/innodb/r/alter_kill.result b/mysql-test/suite/innodb/r/alter_kill.result index 9b24fddf9ef..87c89834ec1 100644 --- a/mysql-test/suite/innodb/r/alter_kill.result +++ b/mysql-test/suite/innodb/r/alter_kill.result @@ -2,10 +2,12 @@ # Bug#16720368 INNODB CRASHES ON BROKEN #SQL*.IBD FILE AT STARTUP # SET GLOBAL innodb_file_per_table=1; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE bug16720368_1 (a INT PRIMARY KEY) ENGINE=InnoDB; connect con1,localhost,root; CREATE TABLE bug16720368 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB; INSERT INTO bug16720368 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8); +InnoDB 0 transactions not purged connection default; # Cleanly shutdown mysqld disconnect con1; diff --git a/mysql-test/suite/innodb/t/alter_kill.test b/mysql-test/suite/innodb/t/alter_kill.test index 922378d2919..628ff553fc0 100644 --- a/mysql-test/suite/innodb/t/alter_kill.test +++ b/mysql-test/suite/innodb/t/alter_kill.test @@ -27,12 +27,14 @@ call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE faile -- echo # SET GLOBAL innodb_file_per_table=1; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE bug16720368_1 (a INT PRIMARY KEY) ENGINE=InnoDB; connect (con1,localhost,root); CREATE TABLE bug16720368 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB; INSERT INTO bug16720368 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8); +--source include/wait_all_purged.inc connection default; From 00b6c7d8fc8a75b023f78d5f08324cba000002b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 10 Oct 2018 06:31:43 +0300 Subject: [PATCH 28/28] MDEV-16946 innodb.alter_kill failed in buildbot with wrong result Ensure that no redo log checkpoint occurs in a critical section of a recovery test. --- mysql-test/suite/innodb/t/alter_kill.test | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mysql-test/suite/innodb/t/alter_kill.test b/mysql-test/suite/innodb/t/alter_kill.test index 922378d2919..8150f990707 100644 --- a/mysql-test/suite/innodb/t/alter_kill.test +++ b/mysql-test/suite/innodb/t/alter_kill.test @@ -127,13 +127,14 @@ INSERT INTO t1 VALUES(42); CREATE TABLE bug16735660 (a INT PRIMARY KEY) ENGINE=InnoDB; XA START 'x'; +--source ../include/no_checkpoint_start.inc INSERT INTO bug16735660 VALUES(1),(2),(3); XA END 'x'; XA PREPARE 'x'; +--connection default +--let CLEANUP_IF_CHECKPOINT=XA ROLLBACK 'x';DROP TABLE bug16735660; +--source ../include/no_checkpoint_end.inc --- connection default - --- source include/kill_mysqld.inc -- disconnect con1 -- move_file $MYSQLD_DATADIR/test/bug16735660.ibd $MYSQLD_DATADIR/bug16735660.omg